Java编程规范
命名约定 |
准确说明变量/字段/类的完整的英文描述符。 项目 com.alibaba 包 com.alibaba.ai.util 类 UpperCamelCase 抽象类 AbstractUpperCamelCase 异常类 UpperCamelCaseException 测试类 UpperCamelCaseTest 通知类 UpperCamelCaseAdvice 工具类 UpperCamelCaseUtils 工具类 功能类 UpperCamelCaseInter 拦截器 处理器 UpperCamelCaseHandler 处理器 接口 UpperCamelCaseService 实现类 UpperCamelCaseServiceImp
常量 MAX_VALUE 变量 lowerCamelCase 方法 lowerCamelCase 参数 lowerCamelCase
A) Service/DAO 层方法命名规约 1) 获取单个对象的方法用 get 做前缀。 B) 领域模型命名规约 |
注释约定 |
我们还会对注释约定进行讨论,所以,我们先谈谈一些基本点: 先写注释,后写代码。 \ 边写代码,边写注释 1. 清晰。代码注释的目的是要使代码更易于被同时参与程序设计的开发人员以及其他后继开发人员理解。 2. 简洁。最好的注释应该是简单明了的注释。注释不必洋洋洒洒,只需提供足够的信息,使别人能够理解你的代码。 3. 运行, 4. 功能, 5. 原因, |
参数约定 |
成员函数的参数 @param 标识的头文件中注释。应说明: 1. 体现功能: 体现参数的上下文。 2. 体现约束: 参数的值域,能否被成员函数接收。例如:成员函数只接收正数,或者字符数小于五的字符串。 【前提条件】 3. 体现接口: 体现原类:Object——>体现接口:Runnable 【支持多态性,不坚持一个参数是一个类的层次结构中某个类的实例,而说明它支持一个特定的接口,这意味着它只用多态地适应你的需要即可】 |
导入类 import java.lang.Long |
完全限制代码 import java.lang.Long |
项目命名 com.alibaba. |
小写单词、域名反转 |
包命名 com.alibaba.ai.util |
小写单词 、单数形式 |
类命名 UpperCamelCase 风格 \ DO / BO / DTO / VO / AO / PO / UID 风格 |
大写首字母 [首部单词、中间单词] 、单数形式 MarcoPolo / UserDO / XmlService / TcpUdpDeal / serialVersionUID |
方法名、参数名、成员变量、局部变量 lowerCamelCase 风格 |
小写首字母 [首部单词】、大写首字母[中间单词] localValue / getHttpMessage() / inputUserId |
常量命名 MAX_VALUE 风格 |
大写单词,下划线连接 MAX_VALUE / DEFAULT_START_DATE |
成员函数命名 |
30 秒读懂法则 WHAT、 WHY、HOW 存取函数的可见性 尽可能地让字段成为被保护 (protected) 类型,这样只有子类可以访问它们。仅当一个外部类需要访问一个字段时,才将相应的获取函数或设置函数置为公有。注意:获取函数是公有而设置函数是私有的情况经常发生。 一定要初始化静态字段 静态字段,也叫类字段,应被赋予有效值,因为不能假定类的实例将在一个静态字段被访问之前生成。 |
抽象类 Abstract 或 Base 开头 |
AbstractUpperCamelCase |
异常类 Exception 结尾 |
UpperCamelCaseException |
测试类 Test 结尾 |
UpperCamelCaseTest |
接口 UpperCamelCaseService \能力接口-able Translatable |
接口属性 String COMPANY = "alibaba"; 接口方法 void commit(); |
实现类 UpperCamelCaseServiceImp \能力实现类 AbstractTranslator |
设计模式 Factory结尾、Proxy结尾、Observer结尾 |
模块、 接口、类、方法使用了设计模式,在命名时需体现出具体模式 public class OrderFactory; \ public class LoginProxy; \ public class ResourceObserver; |
各层命名 |
A) Service/DAO 层方法命名规约 1) 获取单个对象的方法用 get 做前缀。 B) 领域模型命名规约 |
测试集 test成员函数 |
测试成员函数名前加上前缀 test。方便编译产品版前,去除测试函数 |