java 命名推荐

一、Java中的命名规范

好的命名能体现出代码的特征,含义或者是用途,让阅读者可以根据名称的含义快速厘清程序的脉络。不同语言中采用的命名形式大相径庭,Java中常用到的命名形式共有三种,既首字母大写的UpperCamelCase,首字母小写的lowerCamelCase以及全部大写的并用下划线分割单词的UPPER_CAMEL_UNSER_SCORE。通常约定,类一般采用大驼峰命名,方法和局部变量使用小驼峰命名,而大写下划线命名通常是常量和枚举中使用。

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

二、包命名

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

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

三、类命名

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

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

属性 约束
抽象类 Abstract或者Base开头 BaseUserService,AbstractTraceInterceptor
枚举类 Enum 作为后缀 GenderEnum
工具类 Utils 作为后缀 StringUtils
异常类 Exception 作为后缀 CustomerException
接口实现类 接口名+Impl UserServiceImpl
领域模型相关 /DO/DTO/VO/DAO UserDAO,UserDTO
设计模式相关 Builder,Factory,Template ThreadFactory,redisTemplate
测试类 Test 作为后缀 UserServiceTest,表示是测试类
MVC分层 Controller,Service,ServiceImpl,DAO作为后缀 UserController
处理特定功能 Handler,Predicate,Validator 表示处理器,校验器

四、方法

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

 

4.1 返回真伪值的方法

位置 单词 意义
前缀 is 对象是否符合期待的状态 isVaild
前缀 can 对象是否能执行所期待的动作 canRemove
前缀 should 调用方法执行某个命令或方法,好还是不会,应不应该 shouldMigrate
前缀 has 是否持有所期待的对象 hasObservers
前缀 needs 调用方,是否需要执行某个方法或者命令 needsMigrate

 

4.2 用来检查的方法

单词 意义
ensure 检查是否为期待的状态,不是则抛出异常或者返回error code ensureCapactiy
validate 检查是否为正确状态 validateParams
check 检查是否为期待状态 checkInput

 

4.3 按需求才执行的方法

位置 单词 意义  
后缀 IfNeeded 需要的时候执行,不需要的时候什么都不做 drawIfNeeded
前缀 might 同上 mightCreate
前缀 try 尝试执行 tryCreate
后缀 OrDefault 尝试执行,失败时返回默认值 getOrDefault
后缀 OrElse 尝试执行,失败时返回实际参数中指定的值 getOrElse
前缀 force 强制执行 forceCreate,forceStop

 

4.4 异步相关方法

位置 单词 意义
前缀 blocking 线程阻塞方法 blockingGetUser
后缀 InBackground 在后台执行 doInBackground
后缀 Async 异步执行方法 sendASync
后缀 Sync 同步执行方法 sendSync
前缀 or 单独 schedule Job和Task放入队列 scheule,scheuleJob
前缀 or 单独 post 同上 postJob
前缀 or 单独 execute 执行任务 execute,executeTask
前缀 or 单独 start 同上 start,startJob
前缀 or 单独 cancel 停止任务 cancel,cancelJob
前缀 or 单独 stop 同上 stop,stopJob

 

4.5 回调方法

位置 单词 意义
前缀 on 事件发生时执行 onCompleted
前缀 before 事件发生之前执行 beforeUpdate
前缀 pre 同上 preUpdate
前缀 will 同上 willUpdate
前缀 after 事件发生之后执行 afterUpdate
前缀 post 同上 postUpdate
前缀 did 同上 didUpdate
前缀 should 确认事件是否可以发送执行 shouldUpdate

 

4.6 操作对象生命周期的方法

单词 意义
init 初始化 init
pause 暂停 onPause,pause
stop 停止 onStop,stop
abandon 销毁,禁止 abandon
destroy 销毁 destroy
dispose 同上 dispose

 

4.7 与集合操作相关的方法

单词 意义
contains 是否持有指定对象 contains
add 添加 addJob
append 追加 appendJob
insert 插入 insertJob
put 添加 putJob
remove 删除 removeJob
enqueue 添加到列队 enqueueJob
dequeue 从队列移除 dequeueJob
push 添加到栈 pushJob
pop 从栈移除 popJob
peek 从栈头取出但不移除 peekJob
find 寻找 findById

 

4.8 与数据相关的方法

单词 意义
create 新创建 createAccount
from 从什么读取 fromConfig
to 转换 toString
update 更新 updateAccount
load 加载 loadConfig
fetch 远程读取 fetchConfig
delete 删除 deleteAccount
remove 删除 removeAccount
save 保存 saveAccount
commit 提交 commitChange
clear 清除 clearCache

 

4.9 成对出现的动词

单词 意义
get 获取 set 设置
add 增加 remove 删除
create 创建 destory 移除
start 启动 stop 停止
open 打开 close 关闭
read 读取 write 写入
load 载入 save 保存
begin 开始 end 结束
import 导入 export 导出
bind 绑定 unbind 解绑
split 分割 merge 合并
   
view 查看 browse 浏览
edit 编辑 modify 修改
select 选取 mark 标记
copy 复制 paste 粘贴
undo 撤销 redo 重做
insert 插入 delete 删除
add 加入 append 添加
clear 清除  
index 索引 sort 排序
find 查找 search 搜索
increase 增加 decrease 减少
play 播放 pause 暂停
   
launch 启动 run 运行
compile 编译 execute 执行
debug 调试 trace 跟踪
observe 观察 listen 监听
build 构建 publish 发布
input 输入 output 输出
encode 编码 decode 解码
compress 压缩 decompress 解压缩
pack 打包 unpack
parse 解析 emit 生成
connect 连接 disconnect 断开连接
send 发送 receive 接收
   
downlaod 下载 upload 上传
refresh 刷新 synchronize 同步
update 更新 revert 复原
lock 锁定 unlock 解锁
checkOut 签出 checkIn 签入
submit 提交 commit 提交
push 推 pull 拉
expand 展开 collapse 折叠
begin开始 end 结束
start 开始 finish 完成
enter 进入 exit 退出
abort 放弃 quit 离开

 

通用命名规则

  1. 尽量不要使用拼音;杜绝拼音和英文混用。对于一些通用的表示或者难以用英文描述的可以采用拼音,一旦采用拼音就坚决不能和英文混用。
    正例: BeiJing, HangZhou
    反例: validateCanShu
  2. 命名过程中尽量不要出现特殊的字符,常量除外。
  3. 尽量不要和jdk或者框架中已存在的类重名,也不能使用java中的关键字命名。
  4. 妙用介词,如for(可以用同音的4代替), to(可用同音的2代替), from, with,of等。
    如类名采用User4RedisDO,方法名getUserInfoFromRedis,convertJson2Map等
posted @ 2023-04-17 14:23  qiushui  阅读(116)  评论(0)    收藏  举报