一、排版
1.1、程序块要采用缩进风格编写,缩进的空格数为 4 个。
说明:对于由开发工具自动生成的代码可以有不一致。
1.2、相对独立的程序块之间、变量说明之后必须加空行。
示例:如下例子不符合规范。
if ( !validNi(ni))
{
. . . / / p r o gr a m c od e
}
repssnInd = ssnData[index].repssnIndex;
repssnNi = ssn_data[index].ni;
应如下书写:
if (!validNi(ni))
{
... // program code
}
repssnInd = ssnData[index].repssnIndex;
repssnNi = ssn_data[index].ni;
1.3、较长的语句( >80 字符)要分成多行书写。
1.4、循环、判断等语句中若有较长的表达式或语句,则要
进行适应的划分,长表达式要在低优先级操作符处划分新
行,操作符放在新行之首。
for (i = 0, j = 0;
(i < first_word_length) && (j < second_word_length);
i++, j++)
{ }
1.5、不允许把多个短语句写在一行中,即一行只写一条语
句。 if、 for、 do、 while、 case、 switch、 default 等语句
自占一行,且 if、 for、 do、 while 等语句的执行语句部分无
论多少都要加括号 { }。
1.6、在两个以上的关键字、变量、常量进行对等操作时,
它们之间的操作符之前、之后或者前后要加空格;进行非对
等操作时,如果是关系密切的立即操作符(如 .),后不应加
空格。
示例:
( 1 )、逗号、分号只在后面加空格。
int a ,b ,c ;
( 2 )比较操作符,赋值操作符 "="、 "+=",算术操作符 "+"、 "%",逻辑操作符 "&&",位域操
作符 "<<"、 "^"等双目操作符的前后加空格。
if (current_time >= MAX_TIME_VALUE)
a = b + c ;
a * = 2 ;
a = b ^ 2 ;
(3)"!"、 "~"、 "++"、 "--"等单目操作符前后不加空格。
flag = !isEmpty; //非操作 "!"与内容之间
i++ ; //"++" , "--"与内容之间
(4)"."前后不加空格。
p.id = pid;
( 5 ) if、for、 while、switch 等与后面的括号间应加空格,使 if 等关键字更为突出、明显。
if (a >= b && c > d)
二、注释
2.1、方法内的注释尽可能使用“//”;对于所有的成员变量、
方法、类、 javadoc 的注释则尽量使用“/*”;
2.2、所有的源文件都在开头有一个注释,列出功能、作者
和时间等,用 Eclipse 的模板即可。
2.3、每个方法、每个具有特殊用处或者控制类的属性,必
须添加注释。
2.4、对分支语句(条件分支、循环语句等)必须编写注释。
2.5、代码中至少包含15%的注释。
2.6、注释使用中文。
三、标识符命名
3.1 、标识符的命名要清晰、明了,有明确含义,同时使用
完整的单词或大家基本可以理解的缩写,避免使人产生误
解。
说明:较短的单词可通过去掉“元音”形成缩写;较长的单词可取单词的头几个字母形成缩
写;一些单词有大家公认的缩写。
示例:如下单词的缩写能够被大家基本认可。
temp 可缩写为 tmp ;
flag 可缩写为 flg ;
statistic 可缩写为 stat ;
increment 可缩写为 inc ;
message 可缩写为 msg ;
3.2、自己特有的命名风格,要自始至终保持一致,不可来
回变化。
说明:个人的命名风格,在符合所在项目组或产品组的命名规则的前提下,才可使用。
3.3、对于变量命名,禁止取单个字符(如 i、j、k...),但 i、
j、 k 作局部循环变量是允许的。
3.4、所有的标示符都只能用 A S CⅡ字母( A - Z 或 a-z)、数
字( 0-9)和下划线“_”。
说明: 变量不可使用”_”来命名,常量可使用” _”。
3.5、类名采用大小写混合的方式,每个单词的首字母大写。
例如: UserInfo;接口的大小写规则与类名相似。
3.6、方法名采用大小写混合的方式,第一个单词的首字母
小写,其后单词的首字母大写。例如:setName(String name)。
3.7、 Android 控件的属性都以控件类名的大写字母开头,
如一个姓名的 TextView,则应命名成 tvName,其中 tv 为
控件 TextView 中的缩写。
3.8、常量的声明应该全部大写,每个单词之间用“_”连接。
四、可读性
4.1、对于具有业务意义的数字应该定义为常量;
示例:订单状态,包括 0 未付款, 1 付款中, 2 已付款。则应定义为常量,而不能直接在代
码中使用 0、 1、 2 等数字;
Public class OrderType {
Public static final int WAITING_PAY = 0 ;
Public static final int PAYING = 1 ;
Public static final int PAYED = 2 ;
}
4.2、如果多段代码重复做同一件事情,那么在方法的划分
上可能存在问题,应该考虑重构。
说明:若此段代码各语句之间有实质性关联并且是完成同一件功能的,那么可考虑把此段代
码构造成一个新的方法。
4.3、功能不明确较小的方法,特别是仅有一个上级方法调
用它时,应考虑把它合并到上级方法中,而不必单独存在。
五、效率性
5.1 、在功能的正确性、稳定性、可读性及可测性的前提下,
提高代码效率。
说明:不能一味地追求代码效率,而对功能的正确性、稳定性、可读性及可测性造成影响。
5.2、循环体内工作量最小化。
说明:应仔细考虑循环体内的语句是否可以放在循环体之外,使循环体内工作量最小,从而
提高程序的时间效率。
示例:如下代码效率不高。
for (ind = 0; ind < MAX_ ADD_ NUMBER; ind++)
{
sum += ind;
backSum = sum;
}
语句“ backSum = sum;”完全可以放在 for 语句之后,如下。
for (ind = 0; ind < MAX_ ADD_ NUMBER; ind++)
{
sum += ind;
}
backSum = sum;
5.3、编程时,要随时留心代码效率;优化代码时,要考虑
周全。
5.4、仔细考查、分析系统及模块处理输入(如事务、消息
等)的方式,并加以改进。
六、质量保证
6.1、代码质量保证优先原则
( 1)正确性,指程序要实现设计要求的功能。
( 2)稳定性、安全性,指程序稳定、可靠、安全。
( 3)可测试性,指程序要具有良好的可测试性。
( 4)规范 /可读性,指程序书写风格、命名规则等要符合规范。
( 5)全局效率,指软件系统的整体效率。
( 6)局部效率,指某个模块 /子模块 /函数的本身效率。
( 7)个人表达方式 /个人方便性,指个人编程习惯。
6.2、防止数组越界、空指针异常等常见的错误处理;认真
转载于:https://my.oschina.net/carbenson/blog/491067