首页 » 技术分享 » [原创]c语言大型程序架构小概

[原创]c语言大型程序架构小概

 

       几个基本的方面前面也有提及和讲述,概括如下:

       1、log系统,2、注释说明,3、写好测试,4、好的编程工具,
见这里

       上面只是简单的回顾了一下基本要素,接下来专属说明一些架构方面的问题。

  

    首先可以肯定的是,c也是可以有设计模式的,用过了c的设计模式也许你才能更好地理解面相对象的那些语言的设计原理和应用领域,往往对于初学者来说让他去 阅读那些大型的开源软件几乎是不可能的事情,调试环境一般的人都很难建立起来,比如nginx apache等等源代码都是多系统支持,所以有很多编译中包含的选项,阅读起来很是费劲,所以我在这里写写还是有必要的。

    在讲述模式之前对于书写格式也要将一下,最好不同功能的函数还是要写在不同的文件中,每个文件对应一个头文件,变量、结构体的声明都要放在头文件中,当然 可以有那种有且仅有一个头文件的文件,比如作typedef等等的程序视觉优化的函数,只有这样才有模式好谈,这是规范的基本构成。

      c是很简洁的,设计的时候没有考虑到现在这么复杂多变的应用,但是他的一些特性唯我们实现优秀的设计模式提供了可能,那就是灵活的指针,指针既可以指向变 量同样也可以指向函数,函数指针就是实现模式的关键,多线程同样也是需要考虑的,没有学过汇编可能彻底理解c语言的函数指针以及应用很困难难,但是可以说 的通俗一些,系统在运行一个程序的时候首先需要为程序分配固定的内存空间,然后才有cpu的调度运行功能函数,而函数本身也是要暂用空间的,暂且这样比 喻,有一个函数的数组,用来存放各个函数,这里面存放的就是这个函数的地址指针,所以我们可以利用这个特性在运行期间根据具体的情况运行不同的函数,而不 需要使用if等条件判断,将函数指针赋值给特定的变量,然后每次都来执行这个函数变量指针,就可以不用理会函数执行到什么位置而去执行。

     常用的方法是设计一个全局的结构体数组,结构体中包含一个函数指针变量,将每次运行的状态函数提前注册到这个变量中,然后执行就跟注册无关了,这样就可以 设计出一个相对松散耦合的程序,让你更加专注于每一个功能函数的实现上,对于多人合作完成的程序也可以分开来设计了,模块设计完成了,只需要在合适的地方 注册这个模块函数指针就可以了,剩下的过程就会由模块函数引导了。

     总得来说要打破老的惯性思维,程序的控制就是if else等条件判断,这种程序是很难维护和扩展的,面向过程的设计要改为模式设计,只有一定的模式才更有利于多线程或者事件驱动模型等应用,将复杂的处理 过程简化为循环调用函数指针所指向的函数和简单的个模块内部处理流程之间的对应,只有将复杂的过程打散,简化,才符合大型程序的要求。

      时间仓促,写得不够仔细,如有疑问请email netpetboy@163.com或者QQ 51977431

转载自原文链接, 如需删除请联系管理员。

原文链接:[原创]c语言大型程序架构小概,转载请注明来源!

0