2025-8-5
命名风格:
命名不能以下划线、美元符起止,(公司的项目在添加检查后会报错导致直接启动不了,强!大!)
类名使用UpperCamelCase风格,只有在DTO\VO\UID等情形中例外,例如:HtmlDTO、XmlVO(这里我平时可能会写HTMLDto这种的样式)
避免子父类的成员变量之间、同一个方法的不同代码块之间使用相同命名的变量,减少混淆
在命名变量时,表示类型的名词放在词尾,例如选择使用startTime,避免使用startedAt
pojo是vo、dto、do的总称,禁止命名为xxPojo
常量定义:
在使用long或者Long赋值时,避免使用l,使用L防止l和1的混淆
换行时,遵循运算符与下文一起换行、不要在括号前换行,方法内多个参数换行应在逗号后进行
不同语义、逻辑、业务等情况下,只需要插入一个回车分割即可
OOP规范:
所有覆写方法都需要使用@Override注解,防止覆盖失败
接口过时时使用@Deprecated表示废弃方法
尽量使用"constant".equals(object),因为object.equals("constant")容易抛出空指针异常
货币金额单位应以最小单位存储,避免使用浮点数。浮点数的引用类型不能使用equals判断相等
使用BigDecimal定义值,来进行浮点数的运行。但是注意定义的时候用string或者valueOf,直接使用BigDemical(double)依旧会导致精度缺失的问题
数据库中的类型对应:bigint对应Long
关于基本数据类型和引用数据类型:pojo中必须都使用引用数据类型,RPC的返回值和参数都要使用引用数据类型,推荐在局部变量中使用基本数据类型
定义pojo类时,不要设定默认值
pojo类中不要同时出现isXXX和getXXX,因为框架在调用提取时不能确定哪一个方法优先调用
日期时间:
日期格式化时,yyyy表示当前年;而YYYY表示当前周的所属年份,即当前周如果跨年,那么YYYY会属于下一年,因此推荐使用yyyy
日期格式化时,大写M表示月份,小写m表示分钟,24小时制为大H,12小时制为小h
集合处理:
使用isEmpty判空,而非size==0,因为前者性能更好。但是在实践中我发现还是应该用hutool中CollUtil的isEmpty,这个不但能判size=0,还能判null;此外string可以使用commons中的StringUtils的isBlank,这个可以判断null、""、" "
在stream流中的toMap方法转为集合时,如果value为null会报NPE
使用map的entrySet等方法返回集合后,不能再在循环里添加对象
