java随笔-代码风格

下午看了《Easy Coding》代码风格一章,整理一下。

命名规范

命名特征

  1. 清晰表明意图,避免误导
  2. 自注释
  3. 不随意使用不规范的缩写
  4. 除非通用的名称(如huawei),否则禁止使用拼音命名

方法名

采用小驼峰,一般为动词,与参数组成动宾结构,如StringBuilderappend(String)

包名

统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词,且使用单数形式,如java.util.lang

类名

大驼峰,如StringBuilder

抽象类名

使用AbstractBase开头,如AbstractList

异常类

使用Exception结尾,如IOException

测试类

Test结尾,如StringBuilderTest

枚举类

Enum结尾,枚举成员名称需要全部大写,单词间用下划线隔开,如ColorEnum

变量

采用小驼峰。

局部变量

局部变量被声明的位置,应该是接近它们首次使用的位置。

数组

类型与中括号相邻,如String[] colors,而非String colors[]

POJO类中布尔类型的变量

在定义类成员变量时,特别是在POJO类中,针对布尔型的变量,命名不要加is前缀,否则部分框架解析会引起序列化错误。 例如,定义表示是否删除的成员变量为Boolean isDeleted,它的getter方法也是isDeleted()。框架在反向解析的时候,“误以为”对应的属性名称是deleted,导致获取不到属性,进而抛出异常。但是在数据库建表中,推荐表达式是与否的值采用is_xxx的命名形式,针对这种情况,需要在中设置,将数据表中的is_xxx字段映射到POJO类中的属性Xxx。 -- 《Easy Coding》

常量

常量分类

  1. 公共常量和类内常量使用:字母全大写、单词之间加下划线,如Integer.MAX_VALUE
  2. 局部常量:小驼峰即可

常量分类标准可参见:java基础-关键字final

魔鬼数字/魔鬼字符串

魔鬼值必须预先使用见名知意的常量定义后,才能使用。公认的字面值是可以不需要预先定义,但是如果具备了特殊的含义,就必须定义出有意义的常量名称,如在TreeMap源码中,表示红黑树节点颜色的true和false就被定义称为类内变量,以方便理解:

private static final boolean RED = false;
private static final boolean BLACK = true;
复制代码

代码展示风格

缩进、空格与空行

编码格式

java源文件编码格式必须是UTF-8,唯一允许出现的空白字符是ASCII的水平空格,即ox20

缩进

禁用缩进,推荐采用4个空格。

空格

  1. 左括号前需要添加空格
  2. 不推荐在多行赋值语句中对齐等号,虽然好看,然而在新增一条较长的赋值语句时,必须重新对齐之前所有语句。
  3. 如果大括号内容为空,则简洁写成{}即可,大括号中间不需要换行和空格

空行

不同方法、不同逻辑、不同语义之间都可以适当增加空行。

换行与高度

换行

  1. 第二行相对第一行缩进 4 个空格,从第三行开始,不再继续缩进,参考示例。
  2. 运算符与下文一起换行。
  3. 方法调用的点符号与下文一起换行。
  4. 方法调用中的多个参数需要换行时,在逗号后进行。
  5. 在括号前不要换行
StringBuilder sb = new StringBuilder();
sb.append("ma").append("chu")
    .append("gao")
    .append("xiao");
复制代码

字符数/行数限制

  1. 单行字符数:120
  2. 单个方法行数:80
  3. 单个文件行数:2000

控制语句

  1. 在控制语句中必须使用大括号,即使只有一行代码
  2. 在条件表达式中不允许有赋值操作,不允许有判别表达式中出现复杂的逻辑组合
  3. 多层嵌套不能超过3层,如果超过,可使用卫语句、策略模式、状态模式等来实现。
  4. 避免采用反逻辑运算

注释

注释三要素:

  1. Noting is strange:不能完全没有注释
  2. Less is more:真正好的代码是自注释的,泛滥的注释影响可读性
  3. Advance with the times:注释应随代码的修改而修改,最忌讳注释反而误导理解。

《阿里巴巴Java开发手册》下载

阿里巴巴Java开发手册PDF

你可能感兴趣的:(java随笔-代码风格)