关于阿里巴巴编程规范

1.对于类和类内部的方法命名要采用驼峰命名法,一般来讲cpp和python的小伙伴可能更喜欢下划线,但是java大部分都是以驼峰来命名的,除此之外类的驼峰以大写字母开始,方法,变量的驼峰以小写字母开始
关于阿里巴巴编程规范_第1张图片
2.抽象类名一般使用Abstract或者Base结尾,异常则使用Exception结尾,测试类一般用Test结尾
3.POJO类的前边不能加is,否则会引起一些特殊的错误,关于这个我觉得主要的一个例子是Boolean isDeleted 和Boolean deleted,他们的方法都是isDeleted(),这样的化RPC框架在解析的时候会误以为前者也是名为deleted,就会导致获取不到该属性产生错误
4.在这里插入图片描述
5.如果设计中采用了设计模式,需要在类名中表现出设计模式,比如如果采用了工厂模式则在结尾加Factory,如果采用了责任链则在结尾加上Chain(吐槽下之前看http源码的时候不会责任链结果卡了好久,个人的感觉看底层源码实现是次要的,对我这个小白来讲可能更多的是学一些编码的技巧之类的东西吧。)
6.类的前面最好使用/**加回车的方式加上类的信息
7.下面这个知道就可以了,便于看别人的代码
关于阿里巴巴编程规范_第2张图片
8.Service和DAO层的方法命名一般以get,list,count,remove,save,update作为前缀用来让人一眼看出方法的类型,除此之外
DO,DTO,VO一般表示数据对象,数据传输对象,网页名称

9.关于常量的定义,一般主要分为五类,跨应用共享常量,应用内共享常量,子工程内共享常量,包内共享常量,类内共享常量
1)跨应用共享:一般放在二方库中,通常是client.jar的constant目录下。
2)应用内共享一般放在一方库中,通常是子模块中的constant目录下。
3)子工程内部共享变量,放在当前工程的constant下
4)包内共享常量一般放在报下的单独constant下
5)类内一般private static final

10 if/for/while/switch/do等保留字与括号之间必须加空格
11 强制使用四个空格缩进,进制使用tab,如果一定要使用tab缩进必须设置一个tab为四个空格,要用IDEA设置insert spaces for tabs
12。单行字符长度不能超过120个
需要换行的规则:
1)第二行相对第一行缩进四个空格
2)运算符与下文一起换行
3)方法调用的点符号与下文一起换行
4)方法调用中的多个参数需要换行时,在逗号后进行
13多个方法在逗号后面加空格
在这里插入图片描述
14IDE 的 text file encoding 设置为 UTF-8; IDE 中文件的换行符使用 Unix 格式,不
要使用 Windows 格式。
15.避免通过一个类的对象引用访问此类的静态变量或者方法,直接用类名来访问即可
16.所有的覆写方法,必须加@Override 注解。
17.浮点数之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能用
equals 来判断。
说明:浮点数采用“尾数+阶码”的编码方式,类似于科学计数法的“有效数字+指数”的表示方式。二进制无法精确表示大部分的十进制小数

18…为了防止精度损失,禁止使用构造方法 BigDecimal(double)的方式把 double 值转
化为 BigDecimal 对象。
说明:BigDecimal(double)存在精度损失风险,在精确计算或值比较的场景中可能会导致业务逻辑异常。
如:BigDecimal g = new BigDecimal(0.1f); 实际的存储值为:0.10000000149
正例:优先推荐入参为 String 的构造方法,或使用 BigDecimal 的 valueOf 方法,此方法内部其实执行了
Double 的 toString,而 Double 的 toString 按 double 的实际能表达的精度对尾数进行了截断。
BigDecimal recommend1 = new BigDecimal(“0.1”);
BigDecimal recommend2 = BigDecimal.valueOf(0.1);
20.POJO 类必须写 toString 方法。使用 IDE 中的工具:source> generate toString
时,如果继承了另一个 POJO 类,注意在前面加一下 super.toString。

关于阿里巴巴编程规范_第3张图片
22.
关于阿里巴巴编程规范_第4张图片
23.一定要注意Map里面K/V能不能存储null值的情况,如下表格
关于阿里巴巴编程规范_第5张图片
24hashmap并不能保证插入的顺序,但是一旦插入完成之后进行遍历,他的遍历顺序总是相同的

25并发时注意单例模式的线程安全问题
26线程资源必须通过线程池提供并不允许在应用中自行 显示创建线程
27线程池不使用Executors而使用ThreadPoolExecutor的方式可以避免资源耗尽的风险
28
高并发的时候同步调用时应该考量锁的性能损耗,能用无锁数据结构就不要用锁,能锁区块就不要锁整个方法,能锁对象就不要锁类
29 hashmap在容量不够时回resize,高并发是可能会出现死链,导致cpu飙升,开发中可以使用其他数据机构或者加锁来规避风险
30.在一个 switch 块内,每个 case 要么通过 break/return 等来终止,要么注释说明程
序将继续执行到哪一个 case 为止;在一个 switch 块内,都必须包含一个 default 语句并且
放在最后,即使它什么代码也没有。

31.使用正则表达式时,利用好预编译功能,可以有效加快正则匹配速度
不要在方法体内定义:Pattern pattern = Pattern.compile(规则);

32
后台输送给页面的变量必须加 ! v a r — — 中 间 的 感 叹 号 。 说 明 : 如 果 v a r = n u l l 或 者 不 存 在 , 那 么 !{var}——中间的感叹号。 说明:如果 var=null 或者不存在,那么 !varvar=null{var}会直接显示在页面上。

注意 Math.random() 这个方法返回是 double 类型,注意取值的范围 0≤x<1(能够
取到零值,注意除零异常),如果想获取整数类型的随机数,不要将 x 放大 10 的若干倍然后
取整,直接使用 Random 对象的 nextInt 或者 nextLong 方法。

34.不能在 finally 块中使用 return,finally 块中的 return 返回后方法结束执行,不/会再执行 try 块中的 return 语句。

你可能感兴趣的:(java,开发语言)