讨论下程序的模块组成问题
不知道大家有没有体会,就是一个程序里各个模块非常多,每个模块又有
一大堆类,还有许多全局函数,全局变量,大家是怎样将它们有效的组织的?
我也试着去看一些比较出名的软件的源码,如freeamp,bo2k。我看到freeamp
整个workspace分成许多project,有些project的link输出名字为xxx.ui,xxx.pif
这些不清楚是什么格式的文件,难道是freeamp自己定义某种格式的模块,最后
它又是怎样将这些模块联编的呢?
再将问题细化一点,我常常在MFC程序中以MS所谓的dna结构去组织各个类,如属于
UI的一类(这些类一般是从MFC继承过来的),管逻辑的一类(这一类通常是自己写
的一些类),再往下就是底层的了,如自己构造的网络传输模块,系统处理模块等等。
但是我见到学校里多数人的做法是具体的处理函数也直接写在视图类里,一个ListView
里密密麻麻一大堆函数,我的感觉就是很混乱,应该分开,这也利于以后的UI Layer
和LOGIC Layer的复用,大家是怎么看的?
当然了,有种情况就是它的那个ListView是从别人已经做好的、有很好看的UI的类继
承过来的,他的主要任务就是在这个继承过来的ListView加一些LOGIC处理用的函数,
总的代码量不多,逻辑组成也很明显,UI在基类里,处理部分在继承的类里,可是我
还是不喜欢这样,一般我都会在另外写个类,因为自己的c++基础不是很好,再加上自
己的这种想法可能不对也引出不少几个类组合起来的问题。比如我常常会犯重定义某
个变量(redefine)的错误,原因就在于几个类之间交叉声明(a.h中 include b.h,c.h,
c.h中 include b.h ),还有就是一些全局变量和函数不知道该放在那里,不知道一个类
是new出来好还是直接声明,在编译时初始化好,搞不清什么时候将几个类放在同一个文
件里合适...
最后还要问一个问题:写一些小程序到了一定的阶段,各位觉得是去学点UML,软工的课程,学下ROSE的使用会对作大程序有帮助还是先去看看别人做的大程序,自己从模仿到独立编写,最后到成长到差不多要做Project Manager的时候了再看这些Software Engineer的书、软件呢?前段时间和周围的几个同学讨论这些问题,看法都不一致。
除开codeguru和codeproject,不知道各位还常去什么站点?这两个站点的代码都是比较小规模的真希望能多看点大型的源代码。大家认为sourceforge的代码质量、难度怎样?
请问有什么C/C++的邮件列表?