打印
[应用相关]

模块化程序请教

[复制链接]
1809|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wang1216|  楼主 | 2015-11-19 16:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不知道程序员们有没有想过,单片机程序如果分成模块,通过连线连接这些模块间的输入和输出,直观明了,还容易修改逻辑,和领导还好解释,模块内部高度内聚,模块间几乎没有耦合,只有连线。
一部分模块和硬件相关,其它都是纯软件,修改时也只是改改软件模块和连线。
沙发
hbzjt2011| | 2015-11-19 16:50 | 只看该作者
有点OO(面向对象)编程的意思了,就像java和C#似的的封装成类,看起来简单明了,只不过C语言不能不是面向对象的语言,不过还是可以效仿的

使用特权

评论回复
板凳
wang1216|  楼主 | 2015-11-19 16:56 | 只看该作者
hbzjt2011 发表于 2015-11-19 16:50
有点OO(面向对象)编程的意思了,就像java和C#似的的封装成类,看起来简单明了,只不过C语言不能不是面向 ...

C语言很方便,但大多数软件开发人员,写软件求方便,到处使用全局变量,导致程序模块思想荡然无存,实在是让人头疼啊

使用特权

评论回复
地板
hbzjt2011| | 2015-11-19 16:59 | 只看该作者
wang1216 发表于 2015-11-19 16:56
C语言很方便,但大多数软件开发人员,写软件求方便,到处使用全局变量,导致程序模块思想荡然无存,实在 ...

这点确实是,不过编程经验丰富的程序员将头文件和源文件编写的很好,变量也分别定义,全局变量放在一个头文件里,还是看个人的编程习惯了

使用特权

评论回复
5
玄德| | 2015-11-19 18:33 | 只看该作者
没觉得全局变量有什么不好,
只要把握住逻辑,别导致混乱。
现在芯片资源多,用不完。
我的项目经常用很多全局变量,变量名就有上百。

全局变量比较慢,这是真的。
所以,大批量处理要先导入局部变量,最后再导一次。


使用特权

评论回复
6
diweo| | 2015-11-19 19:08 | 只看该作者
c里面的struct就可以达到一定程度的封装。


如果C达不到要求,可以用C++。
通过一个全局的类指针去访问多个成员,总比访问多个全局变量要好些。
另一方面,命名空间也可以限定变量作用域,使用起来也很方便。


使用特权

评论回复
7
john_lee| | 2015-11-19 22:43 | 只看该作者
C 做不了这事,只有 C++。

使用特权

评论回复
8
ianhom| | 2015-11-20 11:43 | 只看该作者
现在手头上的项目就是用c来面向对象实现模块化,c还是很方便的,个人感觉还用不到c++,如果用到c++,新人还要学习c++,学习成本高于让他们深入学好C, 维护不方便。

目前项目中全局变量是禁止使用的,只有模块的接口可以用静态的全局,这样模块化也好做写

使用特权

评论回复
9
前功尽弃| | 2015-11-20 11:45 | 只看该作者
john_lee 发表于 2015-11-19 22:43
C 做不了这事,只有 C++。

C怎么会做不了呢,那人家那些芯片的库函数怎么写出来的

使用特权

评论回复
10
冰零分子| | 2015-11-20 16:26 | 只看该作者
c用结构体和函数指针也可以写出类似class的简单的模块的
不过c还是面向过程为主

使用特权

评论回复
11
john_lee| | 2015-11-20 22:00 | 只看该作者
前功尽弃 发表于 2015-11-20 11:45
C怎么会做不了呢,那人家那些芯片的库函数怎么写出来的

楼主的想法是像积木一样把一些“功能组件”在“框架”的约束下“快速搭建”成需要的“应用程序”。最重要的是,组件还必须做到“易用性”和“普适性”,遵守“开闭原则”,同时需要兼顾“高效率”和“低开销”。
而 bsp 库基本不算具有一定功能的“组件”,而勉强能称为组件的那些协议栈、GUI 库等等,上述几方面特性都做的不好。
我认为 C 的抽象能力严重不足是导致无法实现优异的嵌入式组件的根本原因,而 C++ 天生具有强大的抽象能力,并且具有高效的多范型设计,完全可以实现各方面特性都优异的嵌入式组件,C++ 唯一的缺点是难度巨大,学习曲线陡峭,绝大部分人在学有所成之前就已经放弃了,也就无法领略到 C++ 的风采。

使用特权

评论回复
12
wang1216|  楼主 | 2015-12-16 15:47 | 只看该作者
ianhom 发表于 2015-11-20 11:43
现在手头上的项目就是用c来面向对象实现模块化,c还是很方便的,个人感觉还用不到c++,如果用到c++,新人还 ...

是啊,现在手头项目可以明显看出,第一次完成时结构性很好,但慢慢的不能适应客户需求,后来的程序员在原有程序上不停的缝缝补补,多次修改后已经面目全非。
刚开始学习C时,很多“规定”都是为了快速入门的,看上去十分合理,比如全局变量都放置在同一个头文件,项目小还可以,大了之后就和没放一起也差不多。函数中变量都放在函数开头,看上去不错,但知道栈的人都知道,栈空间是有限的,临时变量用完应及时释放。

使用特权

评论回复
13
sirbai| | 2015-12-27 23:56 | 只看该作者
难道处理器不走线程直接并发,面向对象就不是过程程序,我看面向对象就是把常用函数封装了,还是面向过程调取

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

54

帖子

1

粉丝