Java开发手册(二):命名

从开发中涉及命名的各个点出发,描述其命名建议,方便读者更系统的记忆相关内容。

通用约束

  1. 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。
  2. 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。
  3. 杜绝完全不规范的缩写,避免望文不知义。反例:AbstractClass“缩写”命名成 AbsClass。
  4. 为了达到代码自解释的目标,任何自定义编程元素在命名时,使用尽量完整的单词组合来表达其意,如从远程仓库拉取代码的类命名为 PullCodeFromRemoteRepository。
  5. 如果模块、接口、类、方法使用了设计模式,在命名时体现出具体模式。

在日常开发中常见的涉及命名的点有:项目名称、包名、类名、方法名、变量名、数据库名、表名、字段名、索引名称、URL命名、文件名。

1. 项目名称

小写字母或数字,不能使用数字开头,多个单词之间使用中划线连接,能准确的表达出项目的核心作用,如code-generator。(个人推荐)

2. 包名
  • 包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。
  • 如果表示版本关系等特殊情况,可以使用数字,如org.apache.commons.lang3.StringUtils
3. 类名
  • 类名使用 UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外:DO / BO / DTO / VO / AO。
  • 抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测试类命名以它要测试的类的名称开始,以 Test 结尾。
  • 对于 Service 和 DAO 类,基于 SOA 的理念,暴露出来的服务一定是接口,内部的实现类用 Impl 的后缀与接口区别。
  • 枚举类名建议带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开,如:枚举名字为ProcessStatusEnum的成员名称:SUCCESS / UNKOWN_REASON。
  • 禁止使用非字母字符,特殊情况下可以使用2、4等数字。
4. 属性名
  • 使用 lowerCamelCase 风格,必须遵从驼峰形式。
  • POJO类中布尔类型的变量,都不要加 is,否则部分框架解析会引起序列化错误,如标记删除字段用deleted而不是isDeleted。
  • 尽量不要使用非字母字符
5. 方法名
  • 使用 lowerCamelCase 风格,必须遵从驼峰形式;
  • Service/DAO层方法命名规约
    1. 获取单个对象的方法用get做前缀。
    2. 获取多个对象的方法用list做前缀。
    3. 获取统计值的方法用count做前缀。
    4. 插入的方法用save/insert做前缀。
    5. 删除的方法用remove/delete做前缀。
    6. 修改的方法用update做前缀。
  • 尽量不要使用非字母字符,如数字,下划线,中划线等。
6. 参数名、变量名

使用 lowerCamelCase 风格,必须遵从驼峰形式。

7. 常量
  • 常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
  • 不允许任何魔法值(即未经定义的常量)直接出现在代码中。反例:String key = "Id#taobao_" + tradeId;
8. 数据库名

尽量和项目名称保持一致,如出现特殊情况按照项目名称命名规则进行命名。

9. 表名
  • 必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只 出现数字,不允许出现任何大写字母,建议将类名内不同单词用下划线分割作为表名。
  • 表名不使用复数名词,表名应该仅仅表示表里面的实体内容,不应该表示实体数量,对应于 DO 类名也是单数 形式,符合表达习惯。
  • 表的命名可以考虑加上“业务名称_表的作用”,但需要规范统一命名,不要多种方式混合使用,如果表数据不是特别大,没有必要使用。
  • 禁用保留字,如 desc、range、match、delayed 等,请参考 MySQL 官方保留字。
10. 字段名
  • 必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只 出现数字,不允许出现任何大写字母,建议将属性名内不同单词用下划线分割作为字段名。
  • 禁用保留字,如 desc、range、match、delayed 等,请参考 MySQL 官方保留字。
  • 表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint ( 1表示是,0表示否)。如标记删除字段deleted对应的字段名为is_deleted。
11. 索引名
  • 主键索引名为 pk_字段名;
  • 唯一索引名为 uk_字段名;
  • 普通索引名则为 idx_字段名。
12. 文件名

必须使用小写字母或数字,禁止数字开头,多个单词使用中划线连接,涉及的内容有:js文件、图片、css文件、jsp页面等(个人推荐)。

13. URL命名
  • 必须使用小写字母或数字,禁止数字开头,多个单词使用中划线连接。
  • 限制URL层级不要太深(个人感觉3层以内较好)。

你可能感兴趣的:(Java开发手册(二):命名)