程序复杂度

1.    程序的复杂度

今天看到《code complete19章有一部分都已经重复的讲过了,19.6程序复杂度讲的很好。

1.1     何为程序复杂度

One measure of “programming complexity” is the number of mental objects you

have to keep in mind simultaneously in order to understand a program.

书中一语道出,再理解一个程序的时候,如果要求你同时记住的东西越多,意味着这个程序越复杂。在abap里,不仅仅是这个,还有更多的业务逻辑和表字段的未知项,增加了abap程序的复杂度。

1.2     复杂度的重要性

为什要减少复杂度的原因不用说就明白,复杂度会降低程序的可读性,可维护性,也就是这段代码的质量。复杂度越高质量相应就越低。

1.3     如何减少复杂度

减少复杂度的前提要有一个判断复杂度的方法,书中介绍了一个。不过我认为这个不是100%正确,只是一个辅助的方法而已。用一个“decision points”变量计数来进行判断,计数越高复杂度就越高。程序开始处是“decision points”是1,每遇见一个关键字就加一,如if while repeatfor or,如果一个函数decision points的计数在05之间是不错的,610的话可以考虑去简化这个函数,10以上的话最好把一个函数再划分封装。但是10也不是绝对的极限,程序的复杂度肯定不会就这样可以得出来,这只是一个侧面。程序的每一个细节都会增加会减少复杂度,变量的个数,对象的个数,代码的长度,变量的命名等。没有一个公式可以很好的算出来,只能凭读代码的人去感受吧。

1.4     我的感受

当一个程序很短的时候,复杂度相应的小,解决一个很简单的问题的时候,复杂度相对应会小。不需要控制复杂度,但是随着规模的扩大我们需要一些方法来控制程序的复杂度,以保证程序质量。就像一个公司如果只有10个的人话,管理会很简单,如果有几万人的话,那么必须制定相对应的制度。一个小卖部值需要一个excel就能管理它的进货出库,但是一个大公司就需要一个erp了。

大师们为了控制复杂度提出了结构化编程,只用顺序,选择,循环。当代码量太大的时候,面向过程又不好用了,又有了面向对象来解决问题。产生了相应的语言c++Java等。

量变产生质变这就是其本质吧。

你可能感兴趣的:(code,complete读书笔记)