基本规则
- 使用 Java 8+ 版本。
- 尝试使用 Java 11 或更高版本,但需要保证兼容.
程序结构和命名
通用规则
- 使用小写字母来命名目录。如有必要,可以使用连字符 - 来分隔单词。
- 使用小写字母来命名 package, 使用单数形式,连续的单词连在一起或使用下划线分隔。
- 使用顶级类的类名来命名 Java 源文件,大小写敏感。
- 使用 UTF-8 作为文件 encoding , 要使用 Unix 格式,而不是 Windows 格式的换行符。
- 禁止使用拼音(部分混合,或全部) 来命名程序元素。
- 命名中力求语义表达完整。为达到代码自解释的目标,任何自定义编程元素在命名时,使用尽量完整的单词组合来表达。
- 禁止使用非常规单词缩写。Abstract -> Abs, Condition -> Condi 均为非常规。有些惯例可以接受: Function -> Func
- 避免使用下划线或美元符号作为命名的开始和结束。
类/枚举/接口
- 对类名中单词的缩写,双单词缩写两个字母都大写,多单词缩写第一个字母大写,其他小写。 如: IO, Tcp, Xml
- 在抽象类命名使用 Abstract 开头 或 Base 结尾;
- 异常类命名使用 Exception 结尾;
- 测试类命名以它要测试的类的名称开始,以 Test 结尾。
- 接口的内部实现类可以使用 Impl 结尾。
- 和阿里规范不同,我们不建议为 enum 添加 Enum 后缀, 因为是否使用 enum 是一种实现决策。
- 类名可以体现常见设计模式。
- 使用 lowerCamelCase 的风格来命名 field, variable, parameter 。
- 命名中尽量体现意图
- 在命名中体现意图
常量
- 使用全大写加下划线 CONSTANT_NAME 的形式来命名常量。
- 使用大写字母 L 来标示 long 字面量。小写的 l 容易和 数字 1 混淆。
- 按照常量的复用层次来定义:跨应用共享常量、应用内共享常量、子工程内共享常量、包内共享常量、类内共享常量。
- 使用 lowerCamelCase 的风格来命名
- 将一行的长度限定在 120 字符以内。以下情况例外:import 语句,自动生成的代码,文档中长的 url
- 使用 4 个空格作为基本缩进块。禁止使用 Tab 字符。
- 禁止一行定义多个语句。
语句/表达式
- 在 switch 语句中加上 default 分支。例外:穷举所有 enum 值后可以没有 default。
- 在 switch 语句的 case 分支中,添加 break/continue/return 作为结束,或者加上注释 fall through
- 禁止String 类型禁止使用 == != 比较字符串。
异常
- 处理所有的异常处理分支。 几乎所有情况下catch的异常都需要进行处理。
- 不要catch不能处理的异常。
- 如果确信需要忽略该异常,请在catch段中使用注释说明原因。
- 在捕获异常并封装成其他异常时,把原始异常实例作为新异常的cause参数。在异常发生时, 能通过异常链快速确定完整的异常原因。
- 使用 try-with-resources 方式,对资源对象、流对象进行关闭。
加群联系作者vx:xiaoda0423