前言
最近在工作中遇到一些关于面向过程和面向对象程序设计方法以及系统设计方法的困惑,做了一些深入思考得出了三次迭代法进行系统设计。在此做下记录,来指导我今后的工作。
系统设计的首要目标是降低系统复杂度,以最小原型法快速迭代出清晰高效的系统。在面向过程程序设计中用到的的高内聚与低耦合的模块化设计思想,如何与面向对象程序设计中的抽象与封装想结合,利用各自的优点,避免缺点进行程序设计是一个问题。面向对象在抽象与封装中引入了大量的冗余使效率降低,但却简化了系统结构。面向过程在设计过程中由于使用指针提高了效率,却使得在系统结构上不够清晰。如何融合面向过程高效和面向过程清晰的优点,参考高手的代码风格,提出了系统设计的三次迭代法。分为算法实现,结构优化和算法优化三次迭代。下面就各个部分进行介绍。
算法实现
算法也就是解决问题的方法。是程序设计首要要考虑的问题。程序等于数据结构加上算法。所以算法实现就是以最小原型法最快的进行系统设计。所谓最小原型法就是以最快能看到结果的方式进行算法设计。具体来讲,就是每一步都可以观察到现象来进行系统设计。这样才能首先保证系统是可以工作的。
结构优化
当系统的一个小模块迭代完成后就需要对算法的结构进行优化。在面向过程的程序设计中结合抽象来提高模块的内聚性,结合封装来提高模块的耦合性。内聚是指相对于自己,所需要的数据结构和算法都包括在内部;耦合是相对于别人,所需要依赖的输入和对别人的输出相对独立。具体实现如下。
首先把模块分别以单独的头文件和源文件进行封装。在头文件中包括头文件、宏定义、结构声明、函数声明四个部分。在源文件中包括头文件、全局变量、函数定义三个部分。结构声明和全局变量对应于面向对象中的成员变量,相当于数据结构设计;函数声明和函数定义对应于面向对象中的成员方法,相当于算法设计。程序设计中尽量避免使用全局变量,在需要全局变量的地方可以在源文件的全局变量部分定义指针变量,在函数定义中设计初始化函数来分配内存和销毁函数来释放内存。相当与面向对象中的构造函数和析构函数对对象的内存分配和回收的思想。通过这种方法来优化代码结构,不但没有失去面向过程以函数来驱动程序设计的高效,而且结合了面向对象对模块的抽象和封装的特点。相信能在一定程度上对系统结构进行优化。
算法优化
当系统结构得到优化后,就能更清晰的分析算法,并使用定点化和位运算对算法进行一定程度上的优化。
总结
运用方法对系统设计的最终目的使系统到达清晰高效。这并不是靠一次三次迭代就能到达的。要达到理想的效果必须反复运用使用该方法进行多次迭代。学而不思则罔,思而不学者殆。需要多学习、多思考、多动手,才能日益精进。