搜索
bottom↓
回复: 62

如何使编程结构,模块更好

  [复制链接]

出0入0汤圆

发表于 2013-8-9 14:12:25 | 显示全部楼层 |阅读模式
        刚毕业,从事单片的工作,以前在学校都是做些小打小闹的东西,编程写的程序也不算大,现在出来工作了,写的东西是越来越大,调试、修改、增加程序都很不方便,至于程序整体结构,自己有时看了都恶心,虽说能正常工作。想请问一下大家,有没有什么关于这方面的文章或者书或者教程的,让小弟自己去学习学习...!谢谢...!

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入264汤圆

发表于 2013-8-9 14:37:03 来自手机 | 显示全部楼层
没有,都是摸爬滚打练出来的。

出0入0汤圆

发表于 2013-8-9 15:02:33 | 显示全部楼层
就上操作系统,各功能更利于模块化

出0入0汤圆

 楼主| 发表于 2013-8-9 15:54:44 | 显示全部楼层
mcu_lover 发表于 2013-8-9 14:37
没有,都是摸爬滚打练出来的。

哎,想想也是...!

出0入0汤圆

发表于 2013-8-9 16:30:34 | 显示全部楼层
遵守几个规定就可以...
1. 对变量的访问全部用函数get/set put/set take/give...不能让模块外的程序直接访问任何模块内变量..
2. 对数据的访问用整数索引...通过索引转换为指针...函数参数尽量不要有数组指针...包括结构体数组...
3. 给用户用的函数声明在.h中...模块内部用的声明在.c...或是另一个.h

出0入0汤圆

发表于 2013-8-9 21:34:15 | 显示全部楼层
公司应该给规范的,慢慢滴你就会走上正轨。

出5入4汤圆

发表于 2013-8-9 21:41:40 | 显示全部楼层
不就是模块化编程么。楼主可以百度看看,资料不少的,我当时也是自己这样过渡的。复杂一点的程序用模块化编程时肯定必要的。

出0入0汤圆

发表于 2013-8-9 23:47:47 | 显示全部楼层
怎么会没有这样的书呢,深入浅出AVR(老书了,傻孩子又有了好多新想法,正在写一本新的书)、MSP430系列单片机系统工程设计与实践这两本单片机类的书都说到了模块化的一些知识。
专门的书的话,我没发现,也许软件工程这个专业的人会学过~~~
不过,还是要多看高手的工程结构,自己慢慢在实践中慢慢摸索合适自己当前能力水平和项目要求的模式,大概就是要求将硬件、编译器相关的部分分离出来、和模块的封装、重用性吧

出0入0汤圆

发表于 2013-8-11 09:29:05 | 显示全部楼层
adce 发表于 2013-8-9 16:30
遵守几个规定就可以...
1. 对变量的访问全部用函数get/set put/set take/give...不能让模块外的程序直接访 ...

大哥能解释一下吗?
什么叫get/set put/set take/give...
我怎么看不懂。。。。是不是我C没学好!

出0入0汤圆

发表于 2013-8-11 11:36:43 | 显示全部楼层
万能青年 发表于 2013-8-11 09:29
大哥能解释一下吗?
什么叫get/set put/set take/give...
我怎么看不懂。。。。是不是我C没学好! ...

针对一个模块内的变量...不应该直接extern int value后给用户访问
应该提供两个函数
int get_value(void);
void set_value(int value);
对这个变量进行读写...

出0入0汤圆

发表于 2013-8-11 12:16:53 | 显示全部楼层
adce 发表于 2013-8-11 11:36
针对一个模块内的变量...不应该直接extern int value后给用户访问
应该提供两个函数
int get_value(void) ...

我觉得这些东西挺重要的,能否有什么书籍或者帖子文章推荐下?

出0入0汤圆

发表于 2013-8-11 13:09:43 | 显示全部楼层
值得学习和思考!

出0入0汤圆

发表于 2013-8-11 14:02:43 | 显示全部楼层
万能青年 发表于 2013-8-11 12:16
我觉得这些东西挺重要的,能否有什么书籍或者帖子文章推荐下?

这种书不多...毕竟这个涉及到个人习惯和文化背景....非常难以统一...
英语较强的人喜欢用完整的变量定义 int WaveformFrequenceValue; 因为其能快速阅读理解...
英语较弱的人比较喜欢用缩写或是字母代替 int wave_freq_val; 这样能非常容易的根据变量的外形而区分...这种变量定义是在看外形.根本就没阅读是什么字母...
这里的英语强弱不是英语水平...而是你的思维模式...
甚至 CRect RectClient;   CRect ClientRect....这种类型在前还是在后都是争论的目标....

任何职业都有强迫症.编程也一样...
包括去指针 typedef pint int* 以及去基础类型#include "stdint.h"

自己写程序的过程中慢慢就能理解并形成一套自己的习惯....
写一个lib就能知道get/set的用法...不用get/set很难操作lib中的变量....
写一个支持重入的库就知道直接传地址是多么危险的事...
程序大到一定程度.KEIL编译速度慢的你忍不了.你自然就会注意到.h的用法....KEIL编译速度非常快...但是非常不智能...

一般没有书籍专门说这个东西...很多书籍都在其中的一章中小心的提一句....
一般注意到这点的基本已经脱离入门阶段并且做过一定数量的项目了...
强行规定只会引起反感...

好比给你一个手册让你遵守<<筷子的用法>>....你肯定会想"老子用了20多年的筷子了用你教??"
即便你筷子的用法真的不对...也没人去指正你的...在哪都一样...
这东西只能自己悟...学别人的会使你目不暇接的...种类真的太多了...各有优缺点....

很多Linux粉极力推荐Linux的风格...那只是一个风格...没必要奉若经典...尤其是大部分人还是用正常键盘的....

在主流风格之下...衍生出自己的风格还是很重要的...

出0入0汤圆

发表于 2013-8-11 14:16:04 | 显示全部楼层
这样专讲编程风格的书有
林锐的《高质量C/C++编程指南》,就讲的非常好~

出0入0汤圆

发表于 2013-8-11 15:06:24 | 显示全部楼层
adce 发表于 2013-8-11 14:02
这种书不多...毕竟这个涉及到个人习惯和文化背景....非常难以统一...
英语较强的人喜欢用完整的变量定义  ...


非常赞同。

与其看书还不如参考一下大厂家提供的例程,体会一下这些编程风格带来的好处。只有自己认可了,再多练习,就会形成自己的风格

出0入0汤圆

 楼主| 发表于 2013-8-11 15:16:06 | 显示全部楼层
chencc8 发表于 2013-8-9 23:47
怎么会没有这样的书呢,深入浅出AVR(老书了,傻孩子又有了好多新想法,正在写一本新的书)、MSP430系列单 ...

好的,下个PDF版的看看,看别人写的例程,把好的风格,方式,学习一下也是不错的选择···!

出0入0汤圆

 楼主| 发表于 2013-8-11 15:17:15 | 显示全部楼层
adce 发表于 2013-8-11 14:02
这种书不多...毕竟这个涉及到个人习惯和文化背景....非常难以统一...
英语较强的人喜欢用完整的变量定义  ...

看来只能是自己慢慢摸爬滚打了,的确是每个人都会有属于自己的不同的偏好风格···!

出0入0汤圆

 楼主| 发表于 2013-8-11 15:18:37 | 显示全部楼层
adce 发表于 2013-8-9 16:30
遵守几个规定就可以...
1. 对变量的访问全部用函数get/set put/set take/give...不能让模块外的程序直接访 ...

恩,使用同样的风格编写程序,自己看回以前写的东西,也容易许多···!

出0入0汤圆

 楼主| 发表于 2013-8-11 15:19:16 | 显示全部楼层
nuoya99 发表于 2013-8-11 14:16
这样专讲编程风格的书有
林锐的《高质量C/C++编程指南》,就讲的非常好~

下个PDF版的看看···!哈哈,谢谢···!

出0入0汤圆

发表于 2013-8-11 18:35:40 | 显示全部楼层
adce 发表于 2013-8-9 16:30
遵守几个规定就可以...
1. 对变量的访问全部用函数get/set put/set take/give...不能让模块外的程序直接访 ...

不错,经验丰富的大神

出0入0汤圆

发表于 2013-8-11 19:39:37 | 显示全部楼层
不错,很多东西是靠自己慢慢积累的

出0入0汤圆

发表于 2013-8-11 21:48:59 | 显示全部楼层
林锐的好书

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-8-11 21:57:08 | 显示全部楼层
集百家之长,形成自己的风格!

出0入0汤圆

发表于 2013-8-12 15:41:18 | 显示全部楼层

出0入0汤圆

发表于 2013-8-12 15:41:37 | 显示全部楼层
受益匪浅那

出0入0汤圆

发表于 2013-8-15 09:13:44 | 显示全部楼层
adce 发表于 2013-8-11 14:02
这种书不多...毕竟这个涉及到个人习惯和文化背景....非常难以统一...
英语较强的人喜欢用完整的变量定义  ...

谢谢!!!我是认为我现在是学生做的东西都没有多大的限制,所以写的代码肯定是不符合规范的,或者说不安全的。而这类东西又按照你说的,不是什么书能讲的(除了一些专讲C语言的,但讲一个项目实现还真少)。

出0入0汤圆

发表于 2013-8-15 09:27:56 | 显示全部楼层
找一些软件工程方面的书,不仅包括模块化编程,还会教你高质量,高效率的编程思想。。

出0入0汤圆

发表于 2013-8-15 12:39:05 | 显示全部楼层
多写多改多看多调,功到自然成

出0入0汤圆

发表于 2014-3-26 23:27:48 | 显示全部楼层
学习            

出0入0汤圆

发表于 2014-3-27 09:34:40 | 显示全部楼层

抽空看看 不过链接有病毒

出0入0汤圆

发表于 2014-3-27 16:39:04 | 显示全部楼层
推荐个帖子  http://www.amobbs.com/thread-5505791-1-1.html

出0入0汤圆

发表于 2014-3-27 16:52:45 | 显示全部楼层
正在看《代码大全2》,这本书就是我这几年一直在寻找的,详细讲解程序结构的书。

出0入0汤圆

发表于 2014-3-27 16:54:07 | 显示全部楼层
不要总想一步就把程序写得最规范,那意味着你的程序始终写完成

出35入0汤圆

发表于 2014-3-27 17:01:46 | 显示全部楼层
越写越觉得以前的写得难看.大概是这样的感受.

出0入0汤圆

发表于 2014-3-28 13:33:59 | 显示全部楼层
dou you yi ge guo cheng

出0入0汤圆

发表于 2014-10-9 14:34:11 | 显示全部楼层
交流学习

出0入0汤圆

发表于 2014-10-9 14:45:28 | 显示全部楼层
代码量大了就非常有必要结构化编程

出0入0汤圆

发表于 2014-10-9 14:45:36 | 显示全部楼层
多看点别人的代码,最容易看的就是ucos的源代码了,值得借鉴。还有就是linux下的一些源代码也可以看看。

出0入4汤圆

发表于 2014-10-9 14:56:56 | 显示全部楼层
摆渡下这方面的资料还是有很多的

出0入0汤圆

发表于 2014-10-9 15:03:09 | 显示全部楼层
多看多写

出0入0汤圆

发表于 2014-10-9 15:05:14 | 显示全部楼层
高内聚 低耦合

出0入0汤圆

发表于 2014-10-9 15:07:46 | 显示全部楼层
chencc8 发表于 2014-3-27 16:52
正在看《代码大全2》,这本书就是我这几年一直在寻找的,详细讲解程序结构的书。 ...

我也觉得代码大全不错!

出0入0汤圆

发表于 2014-10-9 20:15:00 | 显示全部楼层
学习了            

出0入0汤圆

发表于 2014-10-9 20:39:37 | 显示全部楼层
那我也准备去买一本《代码大全2》,学习学习。

出0入0汤圆

发表于 2014-10-9 21:10:59 | 显示全部楼层
先收藏。

出0入0汤圆

发表于 2014-10-9 21:28:10 | 显示全部楼层
我也想学习这块知识

出0入0汤圆

发表于 2014-10-9 21:43:46 | 显示全部楼层
可以看一下C++或者C#的类与对象部分,C的模块化编程思想的精华便在于此。

出0入0汤圆

发表于 2014-10-9 23:20:02 | 显示全部楼层
郭小虎 发表于 2014-3-27 16:39
推荐个帖子  http://www.amobbs.com/thread-5505791-1-1.html

帖子不错,谢谢

出0入0汤圆

发表于 2014-10-9 23:26:52 | 显示全部楼层
学LINUX呗,看看,就会学到挺多的,

出0入0汤圆

发表于 2014-10-9 23:40:07 | 显示全部楼层
学习啦。

出0入0汤圆

发表于 2014-10-9 23:48:16 | 显示全部楼层
要自己逼自己养成这个习惯,比如一个小程序,不能觉得随便一放就能工作,就放在那里不管了,

出0入0汤圆

发表于 2014-10-10 00:03:03 来自手机 | 显示全部楼层
强迫自己养成好习惯

出0入0汤圆

发表于 2014-10-10 00:20:55 来自手机 | 显示全部楼层
强迫自己养成好习惯

出0入0汤圆

发表于 2014-10-10 02:04:23 | 显示全部楼层
好习惯要慢慢形成! 逼自己那么去干!

出0入0汤圆

发表于 2014-10-10 08:15:12 | 显示全部楼层
好像回过这类帖子。
个人建议:看完ucos2, 有兴趣再看完qp,对项目文件的组织方法基本就算掌握了。

出0入0汤圆

发表于 2014-10-10 08:24:12 | 显示全部楼层
···············································

出0入0汤圆

发表于 2014-10-10 08:25:40 | 显示全部楼层
111111111111111111111111111111111

出0入0汤圆

发表于 2014-10-10 08:26:16 | 显示全部楼层
2222222222222222

出0入0汤圆

发表于 2014-10-10 08:30:12 | 显示全部楼层
感觉架构这东西需要自己不断的体会、提炼

出0入0汤圆

发表于 2014-10-10 08:34:59 | 显示全部楼层
看看ST公司的固件库,感觉写的就不错,usos的源代码,linux源代码,看看也很不错

出0入0汤圆

发表于 2014-11-17 15:07:34 | 显示全部楼层
学习一下.多加规范自己的....还有多写吧...

而且每个公司都有自己的风格.

出0入0汤圆

发表于 2014-11-17 15:45:37 | 显示全部楼层
写着 写着 就慢慢好了

出0入0汤圆

发表于 2014-11-17 16:08:09 | 显示全部楼层
高内聚,低耦合。精髓
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 04:02

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表