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层以内较好)。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、引言 数据库设计过程中表、字段等的命名规范也算是设计规范的一部分,不过设计规范更多的是为了确保数据库设计的合理...
    SnowflakeCloud阅读 41,148评论 0 48
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,314评论 19 139
  • 来源与:阿里云栖 禁止用于商业用途 ps:如果需要电子书 评论你们邮箱 我会发给你们 下面感觉还是有点乱 目录 一...
    小向资源网阅读 12,253评论 0 12
  • 又一次阅读阿里编程规范,发现有不少条目又给忘了,离上次阅读大概一个多月。我的阅读习惯应该还不错,每次看书籍之类的不...
    思与学阅读 9,412评论 5 3
  • 代码编写规范目的:能够在编码过程中实现规范化,为以后的程序开发中养成良好的行为习惯。代码编写规范使用范围:J2EE...
    CoderBigBear阅读 4,373评论 0 4