值得收藏的Java 命名规范参考!

算机运行使用二进制机器语言,不管什么编程语言,最终都是要翻译成机器语言的。编程语言使用英语表达,是路径依赖的原因,命名一定要规范,杜绝拼音(多音字伤人啊拼音有时候有歧义),一定要用英文。注释和命名是一个程序员的逼格,不能偷懒。在多人项目中,建议偷偷学习一下同事的编码规范

好的命名能体现出代码的特征,含义或者是用途,让阅读者可以根据名称的含义快速厘清程序的脉络。不同语言中采用的命名形式大相径庭。

一、Java中常用到的命名形式共有三种

既首字母大写的UpperCamelCase,首字母小写的lowerCamelCase以及全部大写的并用下划线分割单词的UPPERCAMELUNSER_SCORE。

通常约定,类一般采用大驼峰命名,方法和局部变量使用小驼峰命名,而大写下划线命名通常是常量和枚举中使用。

类型(名) 约束
项目 全部小写多个单词用中划线分隔‘-’ spring-cloud
全部小写 com.alibaba.fastjson
单词首字母大写 Feature,FieldDeserializer
变量 首字母小写多个单词组成时,除首个单词其他单词首字母都要大写 password, userName
常量 全部大写,多个单词,用'_'分隔 CACHEEXPIREDTIME
方法 同变量 read(), getById(Long id)

二,包命名

包名统一使用小写点分隔符之间有且仅有一个自然语义的英文单词或者多个单词自然连接到一块(如 springframework,deepspace不需要使用任何分割)。包名统一使用单数形式,如果类命有复数含义,则可以使用复数形式。

包名的构成可以分为以下几四部分【前缀】 【发起者名】【项目名】【模块名】。常见的前缀可以分为以下几种:

前缀 含义
indi或onem indi.发起者名.项目名.模块名.…… 个体项目个人发起,但非自己独自完成可公开或私有项目,copyright主要属于发起者。
pers pers.个人名.项目名.模块名.…… 个人项目指个人发起,独自完成,可分享的项目copyright主要属于个人
priv priv.个人名.项目名.模块名.…… 私有项目,指个人发起,独自完成非公开的私人使用的项目,copyright属于个人。
team team.团队名.项目名.模块名.…… 团队项目,指由团队发起并由该团队开发的项目copyright属于该团队所有
顶级域名 com.公司名.项目名.模块名.…… 公司项目copyright由项目发起的公司所有

三,类命名

类名使用大驼峰命名形式,类命通常时名词或名词短语,接口名除了用名词和名词短语以外,还可以使用形容词或形容词短语,如Cloneable,Callable等,表示实现该接口的类有某种功能或能力。对于测试类则以它要测试的类开头,以Test结尾,如HashMapTest。

对于一些特殊特有名词缩写也可以使用全大写命名,比如XMLHttpRequest,不过笔者认为缩写三个字母以内都大写,超过三个字母则按照要给单词算。这个没有标准如阿里巴巴中fastjson用JSONObject作为类命,而google则使用JsonObjectRequest命名,对于这种特殊的缩写,原则是统一就好。

属性(类) 约束
抽象 Abstract 或Base 开头 BaseUserService
枚举 Enum 作为后缀 OSType
工具 Utils作为后缀 StringUtils
异常 Exception结尾 RuntimeException
接口实现 接口名+ Impl UserServiceImpl
领域模型相 /DO/DTO/VO/DAO 正例:UserDAO反例:UserDao
设计模式相关 Builder,Factory等 当使用到设计模式时要使用对应的设计模式作为后缀如ThreadFactory
处理特定功能 Handler,PredicateValidator 表示处理器,校验器,断言这些类工厂还有配套的方法名如handle,predicate,validate
测试 Test后缀 UserServiceTest表示用来测试UserService类的
MVC分层 Controller,ServiceServiceImpl,DAO后缀 UserManageControllerUserManageDAO

四,方法

方法命名采用小驼峰的形式,首字小写,往后的每个单词首字母都要大写。和类名不同的是,方法命名一般为动词或动词短语,与参数或参数名共同组成动宾短语,即动词 + 名词。一个好的函数名一般能通过名字直接获知该函数实现什么样的功能。

4.1 返回真伪值的方法

注:pre- prefix前缀,suf- suffix后缀,alo-alone 单独使用

位置 单词 意义
pre is 对象是否符合期待的状态 isValid
pre can 对象能否执行所期待的动作 canRemove
pre should 调用方执行某个命令或方法是好还是不好应不应该,或者说推荐还是不推荐 shouldMigrate
pre has 对象是否持有所期待的数据和属性 hasObservers
pre needs 调用方是否需要执行某个命令或方法 needsMigrate

4.2 用来检查的方法

单词 意义
ensure 检查是否为期待的状态不是则抛出异常或返回error code ensureCapacity
validate 检查是否为正确的状态不是则抛出异常或返回error code validateInputs

4.3 按需求才执行的方法

位置 单词 意义
suf IfNeeded 需要的时候执行不需要则什么都不做 drawIfNeeded
pre might 同上 mightCreate
pre try 尝试执行失败时抛出异常或是返回errorcode tryCreate
suf OrDefault 尝试执行失败时返回默认值 getOrDefault
suf OrElse 尝试执行失败时返回实际参数中指定的值 getOrElse
pre force 强制尝试执行error抛出异常或是返回值 forceCreate, forceStop

4.4 异步相关方法

位置 单词 意义
pre blocking 线程阻塞方法 blockingGetUser
suf InBackground 执行在后台线程 doInBackground
suf Async 异步方法
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值