参考Sun公司的Java编码规范,半翻译半理解。
- 使用空行分割代码块,并给代码块添加注释;
- 一个文件一个类(或者接口),将私有类放在引用该类的公用类的后面;
- 源文件构成:文件注释、package/import、类或接口的声明;
-
/* * Class name
* Version info
* Copyright notice
* Program description
*/
-
- 使用4个空格作为缩进,避免使用Tab键(Tab键还没有统一的标准,有的是4个空格,有的是8个空格);
- 控制每行代码的长度,最多80个字符;
- 代码断行时遵循以下规则:
- 在逗号之后断行;
- 在操作符之前断开;
- 使用更高的抽象层级进行断行;
- 断行时保证每行的逻辑处理层次是在同一层级的;
- 如果上述原则导致代码混乱,断行时直接将新的一行从上一行开始处的第8个空格开始;
- 两大类注释,implementation comments(/*...*/ and //) 和 documentation comments(/**...*/);四小类注释,块注释(用于文件描述、方法、数据结构及算法 )、单行注释、行尾注释和结束行注释;
- 注释用于抽象地描述代码概要和不能直接从代码中获得的信息(比如业务逻辑)。Comments should be used to give overviews of code and provide addtional information that is not readily available in the code itself.
- 注释应该只包含帮助阅读及理解程序的信息。Comments should contain only information that is relevant to reading and understanding the program.
- 注释应该是独立于代码的具体实现的,不会因为代码优化而过时。Avoid comments that are likely to get out of date as the code evlves.
- 添加注释不是提高代码可读性的好方法,首先得使代码本身的逻辑更加清晰。If you feel compelled to add a comment, consider rewriting the code to make it clearer.
- 一行一个变量或方法声明,变量类型与变量名之间间隔一个空格;
- 将声明放在尽可能前面的地方;
- 变量声明时进行初始化;
- 类与接口声明时遵循以下规则:
- 方法名和参数名开始的左括号间没有空格;
- 方法申明开始的左大括号与方法名在同一行;
- 方法申明结束的右大括号单独一行;
- 方法申明之间空行;
- 一行一句;
- 使用“{...}”约束函数块,特别是if-else
- return语句中避免使用方法,除非该方法的返回结果非常明确;
- if-else逻辑块写法:
-
if (condition) {statements;
}
if (condition) {
statements;
} else {
statements;
}
if (condition) {
statements;
} else if (condition) {
statements;
} else if (condition) {
statements;
}
-
- for逻辑块写法:
-
for (initialization; condition; update)
{statements;
}
-
- while逻辑块写法:
-
while (condition) {statements;
}
-
- do-while逻辑块写法:
-
do {statements;
} while (condition);
-
- switch逻辑块写法:
-
switch (condition) {case ABC:
statements;
/* falls through */
case DEF:
statements;
break;
case XYZ:
statements;
break;
default:
statements;
break;
}
-
- try-catch逻辑块写法:
-
try {statements;
} catch (ExceptionClass e) {
statements;
}
-
- 空行的使用:
- 使用两个空行的地方:不同的源代码块之间;不同的类与接口的定义
- 使用一个空行的地方:不同的方法、同一方法中变量声明与使用、在块或者单行注释开始前以及同一方法的不同逻辑块之间
- 空格的使用:
- 关键词与小括号之间;
- 参数列表中的逗号之后;
- 除了"."之外的所有二元操作符;
- for(expr1; expr2; expr3);
- 强制类型转换之后
- 命名规则:
- 类名:使用全拼单词,除非是URL、HTML之类的;首字母大写,其他开头的字母也大写;简单具有描述性;
- 接口名:同类名;
- 方法名:动词或者动词组;首字母小写;其他开头的字母大写;
- 变量:单个单词,全小写;多个单词组合,首字母小写;临时变量一般使用单个字母;
- 常量:使用下划线连接多个单词;所有字母大写
- 其他:
- 使用FIXME和XXX;
- 使用括号将简单逻辑运算独立出来,如"(x >= 0) ? x : -x"和"if ((a == b) && (c == d))"
- 避免组合赋值,让逻辑清晰简单!如"a = b = c"和"if (c++ = d++) {...}"
- 使用常量或者变量代替直接使用数字;
时间: 2024-10-26 07:53:48