zoukankan      html  css  js  c++  java
  • 代码规范(十)

    7.3.10 尽量减少循环嵌套层次。
    7.3.11 避免循环体内含判断语句
    避免循环体内含判断语句,应将循环语句置于判断语句的代码块之中。

    说明:目的是减少判断次数。循环体中的判断语句是否可以移到循环体外,要视程序的具体情况而言,一般情况,与循环变量无关的判断语句可以移到循环体外,而有关的则不可以。

    示例:如下代码效率稍低。

    复制代码
     1 for (i = 0; i < MAX_RECT_NUMBER; i++)
     2 {
     3    if (DataType == RECT_AREA)
     4     {
     5     AreaSum += RectArea[i];
     6     }
     7     else
     8     {
     9 RectLengthSum += Rect[i].length;
    10 RectWidthSum += Rect[i].width;
    11     }
    12 }
    复制代码

    因为判断语句与循环变量无关,故可如下改进,以减少判断次数。

    复制代码
     1 if (DataType == RECT_AREA)
     2 {
     3    for (i = 0; i < MAX_RECT_NUMBER; i++)
     4     {
     5 AreaSum += RectArea[i];
     6     }
     7 }
     8 else
     9 {
    10     for (i = 0; i < MAX_RECT_NUMBER; i++)
    11     {
    12 RectLengthSum += Rect[i].length;
    13 RectWidthSum += rect[i].width;
    14     }
    15 }
    复制代码

    7.3.12 不要一味追求紧凑的代码。
    说明:因为紧凑的代码并不代表高效的机器码

    8 性能
    在写代码的时候,从头至尾都应该考虑性能问题。这不是说时间都应该浪费在优化代码上,而是我们时刻应该提醒自己要注意代码的效率。比如:如果没有时间来实现一个高效的算法,那么我们应该在文档中记录下来,以便在以后有空的时候再来实现她。

    不是所有的人都同意在写代码的时候应该优化性能这个观点的,他们认为性能优化的问题应该在项目的后期再去考虑,也就是在程序的轮廓已经实现了以后。

    8.1 可移植性
    为了保证系统的可移植性,需要注意以下几点:

    8.1.1 换行
    如果需要换行的话,尽量用 println 来代替在字符串中使用" "。

    你不要这样:

    System.out.print("Hello,world! ");

    要这样:

    System.out.println("Hello,world!");

    或者你构造一个带换行符的字符串,至少要象这样:

    String newline = System.getProperty("line.separator");

    System.out.print ("Hello world" + newline);

    8.1.2 PrintStream
    PrintStream已经被不赞成(deprecated)使用,用PrintWrite来代替。

    8.2 可测性
    8.2.1 调测
    在同一项目组或产品组内,要有一套统一的为集成测试与系统联调准备的调测开关及相应打印方法,并且要有详细的说明。

    说明:本规则是针对项目组或产品组的。

    8.2.2 调测信息串格式
    在同一项目组或产品组内,调测打印出的信息串的格式要有统一的形式。信息串中至少要有所在模块名(或源文件名)。

    说明:统一的调测信息格式便于集成测试。

    8.2.3 在编程中注意单元测试
    编程的同时要为单元测试选择恰当的测试点,并仔细构造测试代码、测试用例,同时给出明确的注释说明。测试代码部分应作为(模块中的)一个子模块,以方便测试代码在模块中的安装与拆卸(通过调测开关)。

    说明:为单元测试而准备。

    8.2.4 测试准备
    在进行集成测试/系统联调之前,要构造好测试环境、测试项目及测试用例,同时仔细分析并优化测试用例,以提高测试效率。

    说明:好的测试用例应尽可能模拟出程序所遇到的边界值、各种复杂环境及一些极端情况等。

    8.2.5 测试手段
    在软件系统中设置与取消有关测试手段,不能对软件实现的功能等产生影响。

    说明:即有测试代码的软件和关掉测试代码的软件,在功能行为上应一致。

    8.2.6 调测开关
    用调测开关来切换软件的DEBUG版和正式版,而不要同时存在正式版本和DEBUG版本的不同源文件,以减少维护的难度。

    8.2.7 调试与测试
    在编写代码之前,应预先设计好程序调试与测试的方法和手段,并设计好各种调测开关及相应测试代码如打印函数等。

    说明:程序的调试与测试是软件生存周期中很重要的一个阶段,如何对软件进行较全面、高率的测试并尽可能地找出软件中的错误就成为很关键的问题。因此在编写源代码之前,除了要有一套比较完善的测试计划外,还应设计出一系列代码测试手段,为单元测试、集成测试及系统联调提供方便。

    8.2.8 调测开关的级别和类型
    调测开关应分为不同级别和类型。

    说明:调测开关的设置及分类应从以下几方面考虑:针对模块或系统某部分代码的调测;针对模块或系统某功能的调测;出于某种其它目的,如对性能、容量等的测试。这样做便于软件功能的调测,并且便于模块的单元测试、系统联调等。

    8.2.9 编写防错程序
    编写防错程序,然后在处理错误之后可用断言宣布发生错误。

    示例:假如某模块收到通信链路上的消息,则应对消息的合法性进行检查,若消息类别不是通信协议中规定的,则应进行出错处理

  • 相关阅读:
    XSS 跨站脚本攻击之构造剖析(一)
    PHP 一个表单多个提交按钮,处理不同的业务逻辑
    Ajax 学习之动态获取,返回服务器的值
    Ajax 学习之获取服务器的值
    Ajax 学习之创建XMLHttpRequest对象------Ajax的核心
    H5开发之Eclipes 编码乱码问题
    PHP 表单提交多行数据,显示多个submit
    PHP 输出表格单元格的数据之用表单的方式;
    PHP 读取逐条数据库记录,以及提交下拉菜单选项
    mysql多个TimeStamp设置(转)
  • 原文地址:https://www.cnblogs.com/9635741zly/p/14916507.html
Copyright © 2011-2022 走看看