alibaba / p3c

Alibaba Java Coding Guidelines pmd implements and IDE plugin
https://github.com/alibaba/p3c/wiki
Apache License 2.0
30.28k stars 8.05k forks source link

提几条日常编码时的想法供参考 #979

Closed haiyangyiba closed 6 months ago

haiyangyiba commented 11 months ago

大神们好: 以下是我整理了几条日常编码时的想法,特来这里反馈一下,看看是否值得参考: (1)枚举类里面写的属性方法时,强制不能有setter,因为枚举类限定了类不能被new实例,所有实例对象的属性值在构造实例时已经指定了,而且对外提供访问需要提供getter方法,实际上getter/setter方法都是自动生成的,很多人很多时候无意识的直接就生成了setter方法了;再有就是既然有setter方法但是不能使用(我理解有并发隐患);所以我建议从编码规范上来统一说明一下。

public enum SexEnum {

   Boy("男");

   private String text;

   SexEnum(String text) {
       this.text = text;
   }

   //getter

   //setter ,此处的setter方法不要有更合理

}

(2)在一个方法中,如果有多个逻辑差不多的计算逻辑场景,可以使用 {} 来将代码分块,便于阅读,参考如下:

public static void main(String[] args) {
       {
               //计算圆的面积
       }
      {
              //计算原的周长
      }
}

(3)在类上标记@Transactional注解时范围太广了,特别是在Spring data jpa中使用会存在非常多的问题,所以建议这块能不能也给加上警告啥的,参考如下写法:

@Transactional
@Service
public class UserServiceImpl {

}

(4)代码中如果有编写成段的SQL语句时,这块也能不能也检查一下是不是有格式化,未格式化的SQL可以加上警告,不便于阅读;