防御式编程_西风堂_百度空间
防御式编程总的说来就是一种主动预防问题的编码风格。是由很多细节组成的。如果能够养成这些好的习惯,或者在团队中推动这种风格,代码质量将会得到极大提高。

防御式编程{dy}点:强大的可读性,甚至可以自我描述。你的代码应该让人读起来很舒服,逻辑性很强,让人感觉不到难度。不要过分依赖于注释,虽然恰当的注释可以增加可读性。如果你的代码必须大量注释才能读懂,只说明了一个问题,你的代码可读性差。另外,不能为了一点点性能的提高,或者为了表现自己的技巧强大,去缩减编写的代码量或者调整代码的顺序,使之与人们的思维相差甚远。那么恭喜你,你已经out了。这是在C时代,IT人员炫耀技能所喜好的,在今天则是被摒弃的。

第二点:命名规则。这点其实也是为了提升{dy}点所说的可读性。但{dy}点主要指的是算法逻辑上,而本点主要关注变量,方法等的命名要有意义。千万不能用a,b,c代表变量。如果你这么做了,那么恭喜你,你在一个月后自己去读你自己的代码也将遇到极大困难。这里我们推荐采用长名字,不要为了少写几个字母,用生涩的缩写。类一般表示的是人,地点或事物,因此用名词;成员函数一般表示行为,所以用动词,比如start。成员一般也是人,地点,事物,所以也用名词。命名空间也是名词。具体的命名法,在一个团队内部可以采用同一种,具体可以查阅一些关于程序中命名规则的书籍。当然一个团队中,还可以统一一种前缀表示,为每个变量加入前缀,可以避免变量的误用,比如nVar_XXX就表示它是一个整型变量,pXXX表示指针。

第三点:注释。丰富的注释是有必要的,并且要随着代码的重构也要更新,否则就没有意义了。注释的作用就是表明代码的意图。将注释打散在代码里。不要再开头处集中,这样的注释虽然好找和好维护,但是它离开它解释的代码太远了,容易出问题。有时候,伪代码也可以作为不错的注释。一般来说,这些地方需要加上注释:程序开始处介绍程序的设计和功能;每个源文件开始处,介绍版本控制信息、文件上下文信息以及里面类之间的关系;每个类开头要介绍类的作用,类的接口、假设和依赖的注释;函数开头要介绍其行为,参数、返回值、假设以及限制。字段和属性处要介绍其数据范围、初始化值及用途。算法处需要注释算法的学术方面的来源,采用此算法的原因、假设和限制;其他关键步骤处,需要简要标明该步骤的作用,其实就是伪代码。性能方面需要将可能影响性能或者伸缩性的代码段注释上影响因素和测量方法。

第四点:排版。采用一些空行将代码进行适当的分割,有助于增加可读性和逻辑性,有利于改善代码质量。尽可能用代码块{},否则容易疏忽,比如for循环后者if判断后面跟着一句代码,那你也要加上{},否则,当你需要添加执行语句的时候,很可能不会考虑加上{},这样新的语句,其实就不在for和if的控制下了。不要写一大串表达式,要将其分解。这样看起来也好看。多用括号,不要假设其他程序员很清楚运算优先级。括号就多敲两个键,却可以预防后面可能出现的很多错误。

第五点:代码检查。这是防御式编程的{dy}道防线。你可以选择自己检查,不过一般自己检查自己的代码很难发现什么问题。{zh0}是找另一个人一起检查。逐行的代码检查,会提高代码质量。这也是极限编程中提到的结对编程的原因,两个人一起开发会有助于质量。如果找不到人检查,那么你可以为自己建立一张to do 表格,按照表格逐项检查,比如下面的表:
1、函数开始处,检查参数的正确性。保证参数都处于可接受范围。
2、处理错误和异常。但是不要捕捉通用的异常,这样会丢失具体异常乃至问题本源。
3、尽可能不要用void做函数返回值类型。返回一些东西总是有助于判断函数执行情况的。
4、调用函数后,要对函数执行情况进行检查,不要假设不会执行失败。
5、少用指针。用引用。
6、不要写3.14159,要写const pi=3.14159。这样不但代码可读性强,并且易于维护。常量的都写成const吧。
7、switch一定要写default,除非是是在枚举类型上跳转。
8、重复使用的代码要重构成模块或者函数,否则一出问题就是一大堆。一改也要改一大堆。经验啊,教训啊。
9、多用for,少用其他循环。for更加结构化一些,可以避免疏忽造成的错误。并且,循环要被重构,复杂的操作一定要放在循环外面,不必要的输入输xx万不要写在循环中,这对性能的影响是可怕的。
10、不用的对象一定设为null。这样可以检查对象的状态,也有利于垃圾回收。
11、多用枚举,而不是整数。这样可读性强,并且编译就可以预防非法值,不用等到运行时才能发现。
12、避免不必要的递归。递归很昂贵,这点要记牢。

第六点:测试。防御式编程要求程序员自己进行单元测试,并且每集成一个新的功能,都要回归测试,重构后也要回归测试。白盒测试是保证代码质量的必要步骤。通过功能覆盖,语句覆盖,路径覆盖的分析,可以更好的发现bug,保证质量。

第七点:学学设计模式。设计模式是独立于语言和平台的。设计模式不关心具体解决方案,而关心可重用。组合使用这些设计模式,能使系统更快更健壮。


郑重声明:资讯 【防御式编程_西风堂_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——