[20160807][系统设计的三次迭代]

前言

最近在工作中遇到一些关于面向过程和面向对象程序设计方法以及系统设计方法的困惑,做了一些深入思考得出了三次迭代法进行系统设计。在此做下记录,来指导我今后的工作。

         系统设计的首要目标是降低系统复杂度,以最小原型法快速迭代出清晰高效的系统。在面向过程程序设计中用到的的高内聚与低耦合的模块化设计思想,如何与面向对象程序设计中的抽象与封装想结合,利用各自的优点,避免缺点进行程序设计是一个问题。面向对象在抽象与封装中引入了大量的冗余使效率降低,但却简化了系统结构。面向过程在设计过程中由于使用指针提高了效率,却使得在系统结构上不够清晰。如何融合面向过程高效和面向过程清晰的优点,参考高手的代码风格,提出了系统设计的三次迭代法。分为算法实现,结构优化和算法优化三次迭代。下面就各个部分进行介绍。

算法实现

         算法也就是解决问题的方法。是程序设计首要要考虑的问题。程序等于数据结构加上算法。所以算法实现就是以最小原型法最快的进行系统设计。所谓最小原型法就是以最快能看到结果的方式进行算法设计。具体来讲,就是每一步都可以观察到现象来进行系统设计。这样才能首先保证系统是可以工作的。

结构优化

         当系统的一个小模块迭代完成后就需要对算法的结构进行优化。在面向过程的程序设计中结合抽象来提高模块的内聚性,结合封装来提高模块的耦合性。内聚是指相对于自己,所需要的数据结构和算法都包括在内部;耦合是相对于别人,所需要依赖的输入和对别人的输出相对独立。具体实现如下。

         首先把模块分别以单独的头文件和源文件进行封装。在头文件中包括头文件、宏定义、结构声明、函数声明四个部分。在源文件中包括头文件、全局变量、函数定义三个部分。结构声明和全局变量对应于面向对象中的成员变量,相当于数据结构设计;函数声明和函数定义对应于面向对象中的成员方法,相当于算法设计。程序设计中尽量避免使用全局变量,在需要全局变量的地方可以在源文件的全局变量部分定义指针变量,在函数定义中设计初始化函数来分配内存和销毁函数来释放内存。相当与面向对象中的构造函数和析构函数对对象的内存分配和回收的思想。通过这种方法来优化代码结构,不但没有失去面向过程以函数来驱动程序设计的高效,而且结合了面向对象对模块的抽象和封装的特点。相信能在一定程度上对系统结构进行优化。

算法优化

         当系统结构得到优化后,就能更清晰的分析算法,并使用定点化和位运算对算法进行一定程度上的优化。

总结

         运用方法对系统设计的最终目的使系统到达清晰高效。这并不是靠一次三次迭代就能到达的。要达到理想的效果必须反复运用使用该方法进行多次迭代。学而不思则罔,思而不学者殆。需要多学习、多思考、多动手,才能日益精进。

posted @   盛夏夜  阅读(400)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示