告别编码5分钟,命名2小时!史上最全的Java命名规范参考!

| Prefix or Alone | cancel | 停止异步方法 | cancel, cancelJob |

| Prefix or Alone | stop | 同上 | stop, stopJob |

4.5 回调方法

| 位置 | 单词 | 意义 | 例 |

| — | — | — | — |

| Prefix | on | 事件发生时执行 | onCompleted |

| Prefix | before | 事件发生前执行 | beforeUpdate |

| Prefix | pre | 同上 | preUpdate |

| Prefix | will | 同上 | willUpdate |

| Prefix | after | 事件发生后执行 | afterUpdate |

| Prefix | post | 同上 | postUpdate |

| Prefix | did | 同上 | didUpdate |

| Prefix | should | 确认事件是否可以发生时执行 | shouldUpdate |

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

| 单词 | 意义 | 例 |

| — | — | — |

| initialize | 初始化。也可作为延迟初始化使用 | initialize |

| pause | 暂停 | onPause ,pause |

| stop | 停止 | onStop,stop |

| abandon | 销毁的替代 | abandon |

| destroy | 同上 | destroy |

| dispose | 同上 | dispose |

4.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 |

4.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 |

4.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 聚集 |

五、变量&常量命名


5.1 变量命名

变量是指在程序运行中可以改变其值的量,包括成员变量和局部变量。变量名由多单词组成时,第一个单词的首字母小写,其后单词的首字母大写,俗称骆驼式命名法(也称驼峰命名法),如 computedValues,index、变量命名时,尽量简短且能清楚的表达变量的作用,命名体现具体的业务含义即可。

变量名不应以下划线或美元符号开头,尽管这在语法上是允许的。变量名应简短且富于描述。变量名的选用应该易于记忆,即,能够指出其用途。尽量避免单个字符的变量名,除非是一次性的临时变量。pojo中的布尔变量,都不要加is(数据库中的布尔字段全都要加 is_ 前缀)。

5.2 常量命名

常量命名CONSTANT_CASE,一般采用全部大写(作为方法参数时除外),单词间用下划线分割。那么什么是常量呢?

常量是在作用域内保持不变的值,一般使用final进行修饰。一般分为三种,全局常量(public static final修饰),类内常量(private static final 修饰)以及局部常量(方法内,或者参数中的常量),局部常量比较特殊,通常采用小驼峰命名即可。

/**

  • 一个demo

  • @author Jann Lee

  • @date 2019-12-07 00:25

**/

public class HelloWorld {

/**

  • 局部常量(正例)

*/

public static final long USER_MESSAGE_CACHE_EXPIRE_TIME = 3600;

/**

  • 局部常量(反例,命名不清晰)

*/

public static final long MESSAGE_CACHE_TIME = 3600;

/**

  • 全局常量

*/

private static final String ERROR_MESSAGE = " error message";

/**

  • 成员变量

*/

private int currentUserId;

/**

  • 控制台打印 {@code message} 信息

  • @param message 消息体,局部常量

*/

public void sayHello(final String message){

System.out.println(“Hello world!”);

}

}

常量一般都有自己的业务含义,不要害怕长度过长而进行省略或者缩写。如,用户消息缓存过期时间的表示,那种方式更佳清晰,交给你来评判。

通用命名规则


  1. 尽量不要使用拼音;杜绝拼音和英文混用。对于一些通用的表示或者难以用英文描述的可以采用拼音,一旦采用拼音就坚决不能和英文混用。

正例: BeiJing, HangZhou

反例: validateCanShu

  1. 命名过程中尽量不要出现特殊的字符,常量除外。

  2. 尽量不要和jdk或者框架中已存在的类重名,也不能使用java中的关键字命名。

  3. 妙用介词,如for(可以用同音的4代替), to(可用同音的2代替), from, with,of等。

如类名采用User4RedisDO,方法名getUserInfoFromRedis,convertJson2Map等。

六、代码注解


6.1 注解的原则

好的命名增加代码阅读性,代码的命名往往有严格的限制。而注解不同,程序员往往可以自由发挥,单并不意味着可以为所欲为之胡作非为。优雅的注解通常要满足三要素。

  1. Nothing is strange

没有注解的代码对于阅读者非常不友好,哪怕代码写的在清除,阅读者至少从心理上会有抵触,更何况代码中往往有许多复杂的逻辑,所以一定要写注解,不仅要记录代码的逻辑,还有说清楚修改的逻辑。

  1. Less is more

从代码维护角度来讲,代码中的注解一定是精华中的精华。合理清晰的命名能让代码易于理解,对于逻辑简单且命名规范,能够清楚表达代码功能的代码不需要注解。滥用注解会增加额外的负担,更何况大部分都是废话。

// 根据id获取信息【废话注解】

getMessageById(id)

  1. Advance with the time

注解应该随着代码的变动而改变,注解表达的信息要与代码中完全一致。通常情况下修改代码后一定要修改注解。

6.2 注解格式

注解大体上可以分为两种,一种是javadoc注解,另一种是简单注解。javadoc注解可以生成JavaAPI为外部用户提供有效的支持javadoc注解通常在使用IDEA,或者Eclipse等开发工具时都可以自动生成,也支持自定义的注解模板,仅需要对对应的字段进行解释。参与同一项目开发的同学,尽量设置成相同的注解模板。

a. 包注解

包注解在工作中往往比较特殊,通过包注解可以快速知悉当前包下代码是用来实现哪些功能,强烈建议工作中加上,尤其是对于一些比较复杂的包,包注解一般在包的根目录下,名称统一为package-info.java。

/**

  • 落地也质量检测

    1. 用来解决什么问题
  • 对广告主投放的广告落地页进行性能检测,模拟不同的系统,如Android,IOS等; 模拟不同的网络:2G,3G,4G,wifi等

    1. 如何实现
  • 基于chrome浏览器,用chromedriver驱动浏览器,设置对应的网络,OS参数,获取到浏览器返回结果。

  • 注意: 网络环境配置信息{@link cn.mycookies.landingpagecheck.meta.NetWorkSpeedEnum}目前使用是常规速度,可以根据实际情况进行调整

  • @author cruder

  • @time 2019/12/7 20:3 下午

*/

package cn.mycookies.landingpagecheck;

b. 类注接

javadoc注解中,每个类都必须有注解。

/**

  • Copyright ©, 2019-2020, Jann balabala…

  • 类的介绍:这是一个用来做什么事情的类,有哪些功能,用到的技术…

  • @author 类创建者姓名 保持对齐

  • @date 创建日期 保持对齐

  • @version 版本号 保持对齐

*/

c. 属性注解

在每个属性前面必须加上属性注释,通常有一下两种形式,至于怎么选择,你高兴就好,不过一个项目中要保持统一。

/** 提示信息 */

private String userName;

/**

  • 密码

*/

private String password;

d. 方法注释

在每个方法前面必须加上方法注释,对于方法中的每个参数,以及返回值都要有说明。

/**

  • 方法的详细说明,能干嘛,怎么实现的,注意事项…

  • @param xxx 参数1的使用说明, 能否为null

  • @return 返回结果的说明, 不同情况下会返回怎样的结果

  • @throws 异常类型 注明从此类方法中抛出异常的说明

*/

e. 构造方法注释

在每个构造方法前面必须加上注释,注释模板如下:

/**

  • 构造方法的详细说明

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

如何快速更新自己的技术积累?

  • 在现有的项目里,深挖技术,比如用到netty可以把相关底层代码和要点都看起来。
  • 如果不知道目前的努力方向,就看自己的领导或公司里技术强的人在学什么。
  • 知道努力方向后不知道该怎么学,就到处去找相关资料然后练习。
  • 学习以后不知道有没有学成,则可以通过面试去检验。

我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!

以上面试专题的答小编案整理成面试文档了,文档里有答案详解,以及其他一些大厂面试题目

八年CRUD,疫情备战三个月,三面头条、四面阿里拿offer面经分享

八年CRUD,疫情备战三个月,三面头条、四面阿里拿offer面经分享

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

4b (备注Java)**
[外链图片转存中…(img-9KbJNGEh-1712898654507)]

如何快速更新自己的技术积累?

  • 在现有的项目里,深挖技术,比如用到netty可以把相关底层代码和要点都看起来。
  • 如果不知道目前的努力方向,就看自己的领导或公司里技术强的人在学什么。
  • 知道努力方向后不知道该怎么学,就到处去找相关资料然后练习。
  • 学习以后不知道有没有学成,则可以通过面试去检验。

我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!

以上面试专题的答小编案整理成面试文档了,文档里有答案详解,以及其他一些大厂面试题目

[外链图片转存中…(img-A2XzM1Wv-1712898654508)]

[外链图片转存中…(img-j5nCxQh9-1712898654508)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-JknsX557-1712898654508)]

  • 18
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值