- 缩进
1、使用的缩进的字符数为4,用Tab来进行缩进,因为当程序需要2或3个缩进时,使用4格缩进,不会使语句过长超过屏幕,也便于阅读。
2、在使用if或while等嵌套结构时,在if或while等语句下再进行Tab缩进,使程序看起来更加美观。
- 变量命名
1、局部变量的命名采用下划线分隔法,局部变量名采用英文单词的来命名,这样更能明白变量的含义。
正例:student_id/teacher_id
2、遇到含义相同的变量,会在末尾用1,2来区别。但也有例外,在使用循环变量时,因无特殊含义,仅用i,j,k来定义。
正例:p1/p2/p3
3、在标识符命名方面,少采用缩写,若采用缩写就会用发音的部分来命名,并在不容易看出的缩写命名后添加注释。标识符长度跟随所要表达的含义来增减长度,以使其更容易理解。在标识符命名中,最重要的是要保持一致性——在整个程序中,对变量或是函数一类使用相同的命名规则。
正例:int temp 和 int tmp
- 每行最多字符数
1、每行含缩进不允许超过90个字符。
2、当一个程序行很长时,在适当位置运用回车键将程序分行,使其不破坏语句的完整性,也使语句看起来显得不混乱、零散。
- 函数最大行数
1、一个函数允许包含语句的行数我限制为80行,不包括空行和注释。
2、一个函数的最大长度和函数的复杂程度以及缩进大小成反比。
- 函数、类命名
1、函数名使用lowerCamelCase风格,必须遵从驼峰形式。函数名用动词打头,以名词结尾的形式(少数会只有动词命名),使函数功能更容易理解。
正例:getName/setId
2、类名使用UpperCamelCase风格,必须遵从驼峰形式。
正例:InfectStatistic/LibrarySystem
- 常量
1、对常量的命名采用全大写的方式。
正例:public static final int YEAR = 365;
2、如果变量值仅在一个范围内变化用Enum类。如果还带有名称之外的延伸属性,必须使用Enum类,下面正例中的数字就是延伸信息,表示星期几。
正例:publicEnum{MONDAY(1),TUESDAY(2),WEDNESDAY(3), THURSDAY(4),FRIDAY(5),SATURDAY(6),SUNDAY(7);}
- 空行规则
1、变量定义和方法实现间增加空行,便于阅读。
2、在函数之间,增加空行来分割函数,这样使函数之间显得不拥挤,区分更加明显。
- 注释规则
1、类、类方法的注释使用/内容/格式。
2、一般在变量名后,添加一行注释。
正例:char option; //功能选项
3、边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。
- 操作符前后空格
1、在操作符前后添加空格,利于代码的清晰度
正例:int i = 0;/sum = x + y;
- 大括号位置
1、我习惯将左大括号放在行尾,而将右大括号放在行首。对if等语句和函数(定义)没有放置位置的区别(使用do-while例外)。
- 左大括号前不换行。
- 左大括号后换行。
- 右大括号前换行。
- 右大括号后还有else等代码则不换行;表示终止右大括号后必须换行。
2、在if等语句块较为简单时,我会省略左右大括号的使用,以使程序显得简短且美观。
- 其他规则
1、在需要使用变量时,我会在使用前定义,而不是在使用时才定义,这样当一些需要用到其值时,无法获得的情况。例如:
正例:int i;
for(i=0;i<n;i++)
2、在多个变量赋值时,进行分开赋值,而不会写在同一行,使程序更加美观。
正例:x = 1;
y = 2;
z = 3;
3、变量初始化时,提倡在尽可能小的作用域中声明变量,离第一次使用越近越好。这使得代码易于阅读,易于定位变量的声明位置、变量类型和初始值。
正例:int i = 3;
4、在使用一些变量、字符串或者数组时,为避免其被不必要的修改,也为编译时类型检测增加了一层保障,更好的尽早发现错误。
正例:public void printInfo(const char *s);