Java命名规范
文中部分内容来自网络摘抄,如有侵权联系删除
1.1 项目命名规范:
全部小写,多个单词用 - 隔开
1.2 包命名规范:
包名的构成可以分为以下几四部分【前缀】 【发起者名】【项目名】【模块名】。常见的前缀可以分为以下几种
推荐使用公司或机构的顶级域名为包名的前缀,目的是保证各公司/机构内所使用的包名的唯一性
包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词,不要多个英语单词拼接成一个,包名统一使用单数形式。如果类名有复数含义,类名可以使用复数形式。
1.3 类命名规范:
类型 | 方式 | 推荐 |
---|---|---|
类名 | 首字母大写驼峰式 | |
抽象类 | 首字母大写驼峰式 | 使用 Abstract 或 Base 开头。 |
测试类 | 首字母大写驼峰式 | 以它要测试的类的名称开始,以 Test 结尾。 |
异常类 | 首字母大写驼峰式 | 使用Exception 结尾。 |
接口实现类 | 首字母大写驼峰式 | 实现类用 接口名 + Impl 的后缀与接口区别。 |
实体类 | 首字母大写驼峰式 | 无后缀名 |
工具类 | 首字母大写驼峰式 | Utils作为后缀 |
枚举 | 首字母大写驼峰式 | Enum作为后缀 |
1.4 类成员命名规范:
成员名 | 方式 | 推荐 |
---|---|---|
POJO 类中布尔类型的变量 | 首字母小写驼峰式 | 不要加 is ,否则部分框架解析会引起序列化错误 |
常量 | 全部大写 | 多个单词之间用_隔开,长度不限 |
方法名 | 首字母小写驼峰式 |
1.5 配置文件命名规范:
xml文件命名
全部小写,-符号是其xml的用途说明,类似applicationContext属习惯命名。 比如springmvc-servlet.xml、workdesk-manager.xml、workdesk-servlet.xml、applicationContext-basic.xml等
xml里的内容多个字符间以-隔开,比如param-name,filter-mapping等
普通文件命名(jsp,js,img等)
和java普通变量规范相同
属性文件properties
以下划线隔开:errors_zh_CN.properties,hibernate_test.properties
1.6 注解规范:
包注解 包注解在工作中往往比较特殊,通过包注解可以快速知悉当前包下代码是用来实现哪些功能,强烈建议工作中加上,尤其是对于一些比较复杂的包,包注解一般在包的根目录下,名称统一为package名-info.java
。
/**
* 落地也质量检测
* 1. 用来解决什么问题
* 对广告主投放的广告落地页进行性能检测,模拟不同的系统,如Android,IOS等; 模拟不同的网络:2G,3G,4G,wifi等
* 2. 如何实现
* 基于chrome浏览器,用chromedriver驱动浏览器,设置对应的网络,OS参数,获取到浏览器返回结果。
* 注意:网络环境配置信息{@link cn.mycookies.landingpagecheck.meta.NetWorkSpeedEnum}目前使用是常规速度,可以根据实际情况进行调整
* @author cruder
* @time 2019/12/7 20:3 下午
*/
package cn.mycookies.landingpagecheck;
public class packageName-info{}
类注解
javadoc注解中,每个类都必须有注解。
/**
*
*类的介绍:这是一个用来做什么事情的类,有哪些功能,用到的技术...
*
*
*@author 类创建者姓名
*@date 创建日期
*version 版本号
*
*/
public class Demo {}
属性注解
/**注释信息*/
private String 属性名;
/**
* 注释信息
*/
private String 属性名;
方法注释
在每个方法前面必须加上方法注释,对于方法中的每个参数,以及返回值都要有说明。
/**
*方法的详细说明,能干嘛,实现步骤,注意事项
*
*@param xxx 参数1的使用说明,能否为null
*@return 返回结果的说明,不同情况写会返回怎样的结果
*@throws 异常类型 注明从此类方法中抛出异常的说明
*/
public void methodName(){}
构造方法注释
在每个构造方法前面必须加上注释,注释模板如下:
/**
*构造方法的详细说明
*
*@param xxx 参数1的使用说明,能否为null
*@throws 异常类型 注明从此类方法中抛出异常的说明
*/
public 类名(参数类型 参数名){}
简单注解
而简单注解往往是需要工程师字节定义,在使用注解时应该注意一下几点:
枚举类的各个属性值都要使用注解
保持排版整洁,不要使用行尾注释;双斜杠和星号之后要用1个空格分隔。
1.7 开发经验推荐:
如果使用到了设计模式,建议在类名中体现出具体模式。
接口类中的方法和属性不要加任何修饰符号 (public 也不要加 ) ,保持代码的简洁性,并加上有效的 Javadoc 注释。尽量不要在接口里定义变量,如果一定要定义变量,肯定是与接口方法相关,并且是整个应用的基础常量。
创建统一类型的变量,如工资最高工资最低这类型 通过在结尾处放置一个量词,就可创建更加统一的变量,它们更容易理解,也更容易搜索。 请使用 strCustomerFirst和strCustomerLast,而不要使用strFirstCustomer和strLastCustomer。常用的量词后缀有:First(一组变量中的第一个)、Last(一组变量中的最后一个)、Next(一组变量中的下一个变量)、Prev(一组变量中的上 一个)、Cur(一组变量中的当前变量)。
尽量缩小变量的作用域。
实际应用中:
Service / DAO 层方法命名规约
1 ) 获取单个对象的方法用 get 做前缀。
2 ) 获取多个对象的方法用 list 做前缀。
3 ) 获取统计值的方法用 count 做前缀。
4 ) 插入的方法用 save( 推荐 ) 或 insert 做前缀。
5 ) 删除的方法用 remove( 推荐 ) 或 delete 做前缀。
6 ) 修改的方法用 update 做前缀。
领域模型命名规约
1 ) 数据对象: xxxDO , xxx 即为数据表名。
2 ) 数据传输对象: xxxDTO , xxx 为业务领域相关的名称。
3 ) 展示对象: xxxVO , xxx 一般为网页名称。
4 ) POJO 是 DO / DTO / BO / VO 的统称,禁止命名成 xxxPOJO 。
1.8 方法命名规范:
方法命名采用小驼峰的形式,首字小写,往后的每个单词首字母都要大写。 和类名不同的是,方法命名一般为动词或动词短语,与参数或参数名共同组成动宾短语,即动词 + 名词。一个好的函数名一般能通过名字直接获知该函数实现什么样的功能。
1.8.1 返回真伪值
位置 | 单词 | 意义 | 例子 |
---|---|---|---|
前置 | is | 对象是否符合期待的状态 | isValid 是否有效 |
前置 | can | 对象能否执行所期待的动态 | canRemove 是否能执行移除 |
前置 | should | 调用方应不应该去执行这个方法 | shouldMigrate 应不应该移动 |
前置 | has | 对象是否持有某个数据或属性 | hasObservers 是否具有观察者 |
前置 | needs | 调用方是否需要执行某个方法 | needsRemove 是否需要移除 |
1.8.2 用来检查
单词 | 意义 | 例 |
---|---|---|
ensure | 检查是否为期待的状态,不是则抛出异常或返回error code | ensureCapacity |
validate | 检查是否为正确的状态,不是则抛出异常或返回error code | validatetoInput |
1.8.3 按需求才执行
位置 | 单词 | 意义 | 例 |
---|---|---|---|
后置 | IfNeeded | 需要的时候执行,不需要则什么都不做 | drawIfNeeded |
前置 | might | 需要的时候执行,不需要则什么都不做 | mightCreate |
前置 | try | 尝试执行,失败时抛出异常,或是返回errorcode | tryCreate |
后置 | OrDefault | 尝试执行,失败时返回默认值 | getOrDefault |
后置 | OrElse | 尝试执行,失败时返回实际参数中指定的值 | getOrElse |
前置 | force | 强制尝试执行,error抛出异常或是返回值 | forceStop |
1.8.4 异步相关方法
位置 | 单词 | 意义 | 例 |
---|---|---|---|
前置 | blocking | 线程阻塞方法 | blockingGetUser |
后置 | InBackground | 执行在后台线程 | doInBackground |
后置 | Async | 异步方法 | sendAsync |
后置 | Sync | 同步方法 | sendSync |
前置或单独 | schedule | Job和Task放入队列 | schedule,scheduleJob |
前置或单独 | post | Job和Task放入队列 | postJob |
1.8.5 回调方法
位置 | 单词 | 意义 | 例 |
---|---|---|---|
前置 | on | 事件发生时执行 | onCompleted |
前置 | before | 事件发生前执行 | beforeUpdate |
前置 | pre | 事件发生前执行 | preUpdate |
前置 | will | 事件发生前执行 | willUpdate |
前置 | after | 事件发生后执行 | afterUpdate |
前置 | post | 事件发生后执行 | postUpdate |
前置 | did | 事件发生后执行 | didUpdate |
前置 | should | 确认事件是否可以执行 | shouldUpdate |
1.8.6 对象生命周期
单词 | 意义 | 例 |
---|---|---|
initialize | 初始化或延迟初始化使用 | initialize |
pause | 暂停 | onPause, pause |
stop | 停止 | onStop, stop |
abandon | 销毁的替代 | abandon |
destroy | 销毁的替代 | destroy |
dispose | 销毁的替代 | dispose |
1.8.7 集合操作相关
单词 | 意义 | 例 |
---|---|---|
contains | 是包含指定对象相同的对象 | contains |
add | 添加 | addJob |
append | 添加 | appendJob |
insert | 插入到下标n | insertJob |
put | 添加与key对应的元素 | putJob |
remove | 移除元素 | removeJob |
enqueue | 添加到队列的最末位 | enqueueJob |
dequeue | 从队列中头部取出并移除 | dequeueJob |
push | 添加到栈头 | pushJob |
pop | 从栈头取出并移除 | popJob |
peek | 从栈头取出但不移除 | peekJob |
find | 寻找符合条件的某物 | findById |
1.8.8 与数据相关
单词 | 意义 | 例 |
---|---|---|
create | 新创建 | createAccount |
new | 新创建 | newAccount |
from | 从既有的某物新建,或是从其他的数据新建 | fromConfig |
to | 转换 | toString |
update | 更新既有某物 | updateAccount |
load | 读取 | loadAccount |
fetch | 远程读取 | fetchAccount |
delete | 删除 | deleteAccount |
remove | 删除 | removeAccount |
save | 保存 | saveAccount |
store | 保存 | storeAccount |
commit | 保存 | commitChange |
apply | 保存或应用 | applyChange |
clear | 清除或是恢复到初始状态 | clearAll |
reset | 清除或是恢复到初始状态 | resetAll |
1.8.9 成对的动词
单词 | 意义 |
---|---|
get获取 | set设詈 |
add增加 | remove删除 |
create创建 | destory移除 |
start启动 | stop停止 |
open打开 | close关闭 |
read读取 | write写入 |
load 载入 | save保存 |
create创建 | destroy 销毁 |
begin开始 | end结束 |
backup备份 | restore恢复 |
import导入 | export导出 |
split分割 | merge合并 |
inject注入 | extract提取 |
attach附着 | detach脱离 |
bind绑定 | separate分离 |
view查看 | browse浏览 |
edit编辑 | modify修改 |
select 选取 | mark标记 |
copy复制 | paste粘贴 |
undo撒销 | redo重做 |
insert插入 | delete移除 |
add 加入 | append添加 |
clean清理 | clear清除 |
index索引 | sort排序 |
find查找 | search搜索 |
increase增加 | decrease减少 |
play播放 | pause暂停 |
launch启动 | run运行 |
compile编译 | execute执行 |
debug调试 | trace跟踪 |
observe观察 | listen监听 |
build构建 | publish发布 |
input输入 | output输出 |
encode编码 | decode解码 |
encrypt加密 | decrypt解密 |
compress压缩 | decompress解压缩 |
pack打包 | unpack解包 |
parse解析 | emit生成 |
connect连接 | disconnect断开 |
send发送 | receive接收 |
download下载 | upload上传 |
refresh刷新 | synchronize同步 |
update更新 | revert复原 |
lock锁定 | unlock解锁 |
check out签出 | check in 签入 |
submit提交 | commit交付 |
push 推 | pull拉 |
expand展开 | collapse折叠 |
begin起始 | end结束 |
start开始 | finish完成 |
enter进入 | exit退出 |
abort放弃 | quit离开 |
obsolete废弃 | depreciate废旧 |
collect收集 | aggregate聚集 |