代码规范

本文详细介绍了软件开发中的编码规范,涵盖命名、类型声明、常量、赋值、枚举、空格、比较、变量、POJO定义、String使用、比较、容器、单例模式、线程创建、时间处理、锁使用、条件判断等关键方面,旨在提升代码质量和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 命名规范

只能英文,禁止中文拼音,但是youku、alibaba可以

DO、VO、DTO、BO不需要驼峰

领域模型
表名 xxxDO
展示 xxxVO
业务 xxxBO

常量大写,_分割,不要嫌太长

抽象类必须用Abstract开头

包全部用小写,.分割符之间,只能有一个单词,不要用复数
com.changhong.util

使用设计模式的后面加模式类型
OrderFactory
LoginProxy

service服务层命令
Xxxservice -> XxxServiceImpl

形容能力的接口名
Xxxable  -> XXXor

枚举类建议Enum后缀,成员名大写

service/dao层
获取单个 get/selectXxxx()
多个  listXxxx()
统计 countXxxx()
保存 save/insertXxxx()
批量加 batchSave/InsertXxxx()
删除 remove/deleteXxxx()
修改 updateXxxx()

2 申明类型规范

数组申明形式 int[]

3 常量规范

不予许任何魔法值,特别是常量;使用 XxxContents 维护常量

常量层次
跨应用共享常量 放到而方库 xxx.jar 中的constant,我们很少涉及
应用内共享常量 写到common组件中,常用的是Redis的prefix
组件内共享 写到组件内的constants
包内共享 写到包内constants
类共享 使用private static final 直接写到内中

4 赋值规范

Long对象赋值时,必须用大写L

5 枚举使用规范

一个变量只在一个固定范围内变化,使用enum,例如我们消息队列中使用的Type类型,适合使用enum

6 空格规范

If/for/while/switch/do 和括号之间必须有空格

任何二目和三目运算符之间必须有空格

括号:if (a == b)

禁止if不用大括号的if(a==b) System.out.println()

4个空格锁紧,一个tab必须4个空格

函数参数列表之间必须加空格

method(arg1,  arg2,  arg3)

7 比较规范

“ABC”.equals(object)

包装对象使用equals()比较,不使用==

例如 -128 至 127 是在cache 中产生,可以使用==比较,之外在堆中产生,==失效

POJO对象使用包装类型

远程调用返回值和请求参数使用包装类型

8 变量、参数规范

尽量不用可变参数 String... ids

局部变量使用int(建议)

9 POJO定义规范

POJO对象不要设置默认值,否则可能引起不同开发者的使用误差;例如时间createTime,都要显示的给出来

POJO都要重写toString,继承时候调用super.toString

POJO中的布尔类型变量不加is,可以if
class A{
  Boolean ifDel
}

10 String使用规范

String的多次拼接,禁止 "a" + "b" + "c", 使用StringBuilder

11 比较规范

只要重写equals,就要重写hashCode

12 容器规范

容器容量初始化
initialCapacity =大于 (需要存储的元素个数 / 负载因子) + 1的2的最小倍数。注意负载因子(即 loader factor) 默认为 0.75, 如果暂时无法确定初始值大小,请设置为 16(即默认值)

13 单例模式

获取单例优先考虑使用srping @Bean
其次,枚举类
再次,静态内部类

14 线程创建

禁止使用Executors创建线程而是通过ThreadPoolExecutor创建线程

15 多线程中时间的处理

SimpleDateFormat线程不安全,不要定义成普通成员属性、static; 一定要定义则采用这种方式:

private static final ThreadLocal<DateFormat> df = new ThreadLocal<DateFormat>() {

@Override

protected DateFormat initialValue() {

return new SimpleDateFormat("yyyy-MM-dd");

}

};

使用JDK8,全部使用JDK8的时间处理

16 锁使用

如果每次访问冲突概率小于 20%,推荐使用乐观锁,否则使用悲观锁。乐观锁的重试次数不得小于 3 次

17 条件判断语句

swich 必须包含一个default,即是空

坚决反对写多层嵌套if-ifelse- else,使用卫语句优化

条件判断比较复杂时候,使用一个有意义的布尔变量来提高可读性

boolean  existed = (file.open(fileName, "w") != null) && (...) || (...);

18 注释规范

类、类属性、类方法的注释必须使用 Javadoc 规范,使用/**内容*/格式

所有的抽象方法(包括接口中的方法) 必须要用 Javadoc 注释

所有的类都必须添加创建者和创建日期

方法内部单行// 多行/**/

其他

接口做到防备调用方,即请求参数必须检查,防止耗时的调用由于参数错误失败

坚决不是使用过时方法

构造器方法严禁逻辑业务、初始化逻辑,写到init()中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值