代码质量准则

 

        这篇文章提出一些代码质量准则, 将这些准则融入日常写代码的习惯中,尽量保证在自然意识的状态下写出BUG很少的代码,减少写出藏有大量BUG的代码的几率。此准则供约束我个人编程行为使用,也供大家参考。 多读和借鉴优秀的源代码, 不求多写, 但求有意识地克制自己随手写代码的惰性。


        推荐书籍: 《代码质量》,  《整洁代码之道》, 《Writing solid sode》, 《代码大全》


        写在前面的话:

               

           写代码不仅仅只是实现指定需求; 多想想所要实现需求的相关联事物,比如关联的外部子系统,关联需求等。

           跳出当前视角,尽量从更宏观的角度审视原有代码; 多用设计性的思维来看待和完成编程工作。   

           写代码不是简单地敲键盘,其间会涉及到很多的微决策,正是这些微决策会慢慢磨练出一个人的思考和决策能力。

           准确理解API, 尽可能理解自己所编写的每一行代码, 至少要从代码的语义上确定无误。       


         1.  写朴实自然的代码。尽量遵循惯用法和大众用法,以及所用编程语言地道的方式。奇淫巧技可以贴在论坛里供大众观摩欣赏,但不宜放在生产环境。

         2.  逻辑清晰、简洁、紧凑。写代码就如同说话一样,想清楚了再说。说出口就应该是简洁、有条理、干脆利落的,不要罗嗦,拐弯抹角。

         3.   写代码前规划一下思路,做一点设计性的思考工作; 约束条件、资源、算法和流程先用草图勾画清楚。    

         5.   代码风格保持一致性。 包括缩进、空行、换行、操作符两边的空格、命名等。可以在 K&R 《TCPL》 的风格基础上建立自己的风格。

         6.   考虑所有的输入,限定合法输入的范围,拒绝非法输入; 尽可能使用成熟的库、框架和数据交换格式(例如XML和JSON),而不是手工解析。

         7.   保证输出内容正确完整,格式清晰; 若输出依赖于某些变量,要保证当变量修改时能够同步到输出。

         8.   使用成熟的算法; 必要的话,验证所采用计算方法的正确性。       

         9.   捕获所有的异常。将错误隐藏在底层,保证高层视图的正确性;给出合理的提示信息及错误源信息。

         10.   注释简洁扼要,标明隐含的不易猜测的含义; 必要的时候写明引用出处; 标注作者信息及联系方式以供交流。

         11.   跳出当前视角,尽量从更宏观的角度审视原有代码; 使用重构尽可能消除重复的代码。

         12.   涉及并发的代码要尽可能审慎, 把事情的机理和风险理解清楚了再动手。

         13.   隔离易出错部分, 将复杂、晦涩、容易出错的手工解析代码隔离在系统的小角落范围。

         14.   分离可变和不可变部分。

         15.   建立单元测试和回归测试。

         16.   理解和遵循已有规范。仅在有充分理由并与相关人士做好沟通之后少量违例。


         下面是一些细节和注意事项:


         16.   涉及范围(数组、集合等)的代码要特别注意空值及边界情况。

         17.   涉及多个与或非复合条件判断时要小心,正确使用与或操作符; 此外,不要误敲操作符,比如将 && 写成 & 。== 写成 = 。

         18.   关联变量或方法要注意同步修改。比如 java 的 equals 与 hashCode 方法; 圆类的 边长与面积字段。

         19.   保证传递参数的数目、类型和顺序正确;准确理解 API ,  尽量传入合法且有意义的值。

         20.   延迟初始化,使用有意义的初始值,该初始值可以作为默认值。

         21.   防止计算溢出、缓冲溢出、SQL 注入等常见安全问题。

         22.   避免大量创建不可变对象,尽量重用对象;  用完后及早回收,预防内存不足和泄漏。

         23.   最好不要复制/粘贴代码, 尽管很便利;  如果有可能, 抽出共性作为公用子例程。

         24。尽量不要使用全局变量,共享变量。  

         25.   不确定多个复合操作的优先级时,将操作加括号。

         26.   在操作对象引用或指针时,先进行非空检查。若为空,可以给出提示信息、返回默认值,或者什么都不做。


         【未完待续】



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值