代码大全 . 处理代码依赖关系 . 阶段性编程

来源:互联网 发布:mac 多玩游戏盒子 编辑:程序博客网 时间:2024/04/29 03:18

本来在baidu blog上写文章,但是感觉怪怪的;在sohu上写文章,打开主页,发现全是花边新闻,和我脑子中的技术思想格格不入——虽然csdn的blog实在很垃圾,不过看在用了这么久、好歹也是第一程序员网站的份上,还是回到这里来,做做下里巴人的事情吧!(vckbase的blog真可恶,让我半天找不到注册blog的地方!)

 

用断言或者错误处理代码来监察依赖关系

在读到这一段的时候,我特别有感觉。为什么?因为在写代码的时候,常常会用到一些复杂的算法机制(比如说,进化、邻域调整、信息素传播),写着写着,写到步骤B,忽然回想到:步骤A做过没有?如果A没做、或者没做好,我现在写步骤B也是白搭啊!心神不定之下,不得不回到前面,仔细检查代码——郁闷地浪费时间。

事实上呢?如果代码非常重要的话,你可以用状态变量来对关键的顺序依赖关系做出说明。

比如,在类的构造函数里,将isExpenseDataInitialized的类成员初始化为false,表示它没被初始化;在InitializeExpenseData()中,将这个值设为true。每个依赖于已初始化的expenseData的函数,在使用这个数据之前,都可以检查一下:到底有没有初始化?这样就不至于使用错误的数据。

《代码大全》:引入新变量、新初始化代码和新错误处理代码,增加了出错的可能性、额外的复杂度和增加二次出错几率,应该“权衡”。

 

 

延伸思考:

这样的“检查代码”,在执行的时候基本上不浪费什么时间的。

在写阶段性代码的时候,“某个算法过程”是不是完成了,完全可以写一个步骤变量,在代码中进行标记。比如,我们写的伪代码顺序是:A、B、C......,那么我们写代码的时候,定义isAComplete、isBComplete、isCComplete......然后将它们全部初始化为false;再之后我可以先写C段的代码、再写B段的代码......如果不知道自己还有哪些代码没写,将这些isXComplete打印输出,不就一目了然啦?——更何况,这些变量并不直接干预我执行的过程,但是让我的代码更加人性化,何乐而不为?(相当于用编写额外的代码,省却了文档和标记)

 

 

原创粉丝点击