代码质量分类(整理)

上一篇 / 下一篇  2016-06-17 09:53:07

1.致命类:可能导致程序宕机、无响应等影响范围极大的错误;
2.逻辑类:可能造成程序不能达到预期逻辑结果的错误;
3.编码规范及其他类:可能造成程序的可读性、可维护性较差的错误(不可达代码,无效的变量声明)


1.致命类:空指针、越界、内存泄漏、未初始化
2.逻辑类:相同的条件分支、switch缺少break、除0错误、死循环...
3.编码规范及其他:变量未使用、函数未调用、代码不可达、c风格类型转换、效率问题、安全隐患、编译错误...


可以从代码的规范性、完整性和鲁棒性三个方面提高代码的质量。

一.代码的规范性
  首先要把代码写得规范,才可以避免很多低级错误。书写、布局和命名都决定着代码的规范性。规范的代码书写清晰,布局清晰,命名合理。

二.代码的完整性
   代码是否完成了基本功能、输入边界值是否能得到正确的输出、是否对各种不合规范的非法输入做出了合理的错误处理。在软件开发过程中,永远不变的就是需求会一直改变。写出的代码能够把将来需求可能的变化都考虑进去,在需求发生变化时能够尽量减少代码改动的风险,提高代码的可扩展性和可维护性。

   三种测试用例保证代码完整性:功能测试、边界测试、负面测试三方面设计测试用例。

  三种方式把错误信息传递给函数调用者。

  1.函数用返回值来告知调用者是否出错。不同的非零返回值定义了不同的意义,调用者可以根据这些返回值判断出错的原因。这种方式使用不便,因为函数不能直接把计算结果通过返回值直接赋值给其他变量,同时也不能把这个函数计算的结果直接作为参数传递给其他函数。
   2.当发生错误时设置一个全局变量。此时可以在返回值中传递计算结果了。调用者可以直接把返回值赋值给其他变量或者作为参数传递给其他函数。但调用者很容易就会忘记去检查全局变量,因此在调用出错时忘记做相应的错误处理,从而留下安全隐患。
  3.异常。当函数运行出错时,程序就抛出一个异常。程序员可以根据不同的出错原因定义不同的异常类型。因此函数的调用者可以根据异常的类型就能知道出错的原因,从而可以做相应的处理。另外,由于显式划分了程序正常运行的代码块(try模块)和处理异常的代码块(catch模块),代码的逻辑比较清晰。异常在高级语言如C#中是强烈推荐的错误处理方式,但有些早期的语言比如C语言还不支持异常。另外,当抛出异常时,程序的执行会打乱正常的顺序,对程序的性能有很大的影响。
  
三.代码的鲁棒性
  鲁棒性是指程序能够判断输入是否合乎规范要求,并对不合要求的输入予以合理的处理。容错性是鲁棒性的一个重要体现。提高代码的鲁棒性的有效途径是进行防御性编程。防御性编程是指预见在什么地方可能会出现问题,并为这些可能出现的问题制定处理方式。最简单也最实用的防御性编程就是在函数入口添加代码以验证用户输入是否符合要求。需要格外关注这些函数的输入参数。当然并不是所有与鲁棒性相关的问题都只是检查输入的参数这么简单。

TAG:

 

评分:0

我来说两句

我的栏目

日历

« 2024-04-11  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 138638
  • 日志数: 63
  • 建立时间: 2016-03-09
  • 更新时间: 2017-06-06

RSS订阅

Open Toolbar