很具体,万字教你怎样进步 Java 代码质量

打印 上一主题 下一主题

主题 833|帖子 833|积分 2499

作为一名步伐员,我们的本职工作是写代码。本日,我们来学习下怎样进步 Java 代码的质量
1可读性

1.1 正确命名

每种编程语言都有自己的命名规范,差别语言的风格差异有大有小,下面以Java为例:
Java团体命名风格为UpperCamelCase或lowerCamelCase形式。不管是类照旧变量命名要见名知意,切勿使用缩写或中文;风格同一,只管使用英文名词,切勿中英文混淆;只管避免和Java自带类库重名,切勿使用Java关键字命名。


  • 包命名规范
包命名使用小写英文名词,使用“.”分割,每个被分割的单元只管只有一个名词,命名规范为:
域名.公司/个人名称.项目名称.模块名称


  • 类命名规范
类采用UpperCamelCase命名风格,一些特殊的缩写可以采用全大写,如XML。类命名使用名词描述类的作用。


  • 接口命名规范
接口采用UpperCamelCase命名风格,由于接口定义的是一类功能或动作,所以接口的命名一般使用形容词或动词描述接口的举动。


  • 抽象类命名规范
抽象类除了满足UpperCamelCase风格外,一般需要加上Abstract前缀。


  • 异常类命名规范
异常类除了满足UpperCamelCase风格外,一般需要加上Exception或Error后缀,使用名词描述什么异常或错误。


  • 罗列类命名规范
罗列类除了满足UpperCamelCase风格外,一般加上Enum后缀,罗列类中的罗列值采用全部大写风格,单词与单词之间使用“_”举行分割。


  • 方法命名规范
方法命名采用lowerCamelCase风格,一般使用动词+名词来命名,比力常见的有doXxx,handleXxx,findXxxx。


  • 变量命名规范
变量命名采用lowerCamelCase风格,一般使用名词描述变量的作用,需要留意的是区别于常量,只管不要使用特殊符号前缀或使用“_”分割符号。


  • 常量命名规范
常量命名采用全部大写,单词与单词之间使用“_”举行分割。
1.2 代码风格
在一样平常的项目开辟中,一个项目有很多人协同开辟,每个人使用的开辟工具不一样,比如大家常用的vs code和idea,差别的开辟工具或代码习惯也会导致代码风格差别等,我们在开辟时大概习惯性的举行代码格式化,就会导致整个类改动非常多,在代码合并时轻易辩说。
我们可以在项目中增加.editorconfig文件来同一代码风格。
  1. root = true
  2. [*.{adoc,bat,groovy,html,java,js,jsp,kt,kts,md,properties,py,rb,sh,sql,svg,txt,xml,xsd}]charset = utf-8
  3. [*.{groovy,java,kt,kts,xml,xsd}]indent_style = tab              #tab键缩进,可选"space"、"tab"indent_size = 4                 #缩进空格为4个end_of_line = lf                #结尾换行符,可选"lf"、"cr"、"crlf"charset = utf-8                 #文件编码trim_trailing_whitespace = true #不保留行末的空格insert_final_newline = true     #文件末尾增加一个空行curly_bracket_next_line = false #大括号不另起一行spaces_around_operators = true  #运算符两边都有空格indent_brace_style = 1tbs       #条件语句格式是1tbs
复制代码
1.3 注释规约

类注释
类注释采用/**......*/,在每个类的头部要有必要的注释信息,包括:作者、创建时间、类功能描述








  1. /** * 简单分流算法实验, 每次分流只用考虑当前的桶, 不用回溯历史版本 * {@link https://duapp.yuque.com/team_tech/confluence-data-iwskfg/dzmogk} * @author hufei * @date 2021/6/8 7:59 下午 */
复制代码
接口注释
接口注释采用/**......*/,在满足类注释的底子上,接口注释应该包含接口的目的、怎样使用。








  1. /** * AB分桶算法接口规范 * 对外暴露实验桶计算接口,该接口有一个抽象实现类AbstractBucketAlgorithm,具体的分桶算法实现这个抽象类 * @author hufei * @date 2021/6/8 6:06 下午 */
复制代码
方法注释
方法注释采用/**......*/,描述方法的功能、输入、输出及返回值阐明











  1. /** * 计算实验层的桶信息 * @param layerId 分层 id * @param expId 实验 Id * @param expRatio 新的实验占层流量比例 * @param existsLayerBucket 老的层流量实验配比 * @return 新的层流量实验配比 * @throws BucketAlgorithmException */
复制代码
方法内部注释
代码做了些什么以及为什么这样做,特别是复杂的逻辑处置惩罚部分,要尽大概的给出具体的注释。
全局变量注释
包括变量的功能、取值范围、留意事项等的阐明。









  1. /** * 代表kafka收到消息的答复数,0就是不要答复,爱收到没收到.1就是有一个leader broker答复就行,all是所有broker都要收到才行 * 0: Producer不等待kafka服务器的答复,消息立刻发往socket buffer,这种方式不能保证kafka收到消息,设置成这个值的时候retries参数就失效了,因为producer不知道kafka收没收到消息,所以所谓的重试就没有意义了,发送返回值的offset全默认是-1. * 1: 等待leader记录数据到broker本地log即可.不等待leader同步到其他followers,那么假如此时刚好leader收到消息并答复后,leader突然挂了,其他fowller还没来得及复制消息呢,那么这条消息就会丢失了. * all:等待所有broker记录消息.保证消息不会丢失(只要从节点没全挂),这种方式是最高可用的 acks默认值是1. */private String acks = "0";
复制代码
局部变量注释
主要的局部变量必须有注释,无特别意义的情况下可以不加注释。
2、


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

熊熊出没

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表