阿里编码规范学习

本身平时的代码规范不符合要求的重点分析:正则表达式

一、POJO类中布尔类型的变量,都不要加is,不然部分框架解析会引发序列化错误。框架

二、接口类中的方法和属性不要加任何修饰符号(public 也不要加),保持代码的简洁性,并加上有效的Javadoc注释。线程

三、【参考】各层命名规约: A) Service/DAO层方法命名规约 1) 获取单个对象的方法用get作前缀。 2) 获取多个对象的方法用list作前缀。 3) 获取统计值的方法用count作前缀。 4) 插入的方法用save/insert作前缀。 5) 删除的方法用remove/delete作前缀。 6) 修改的方法用update作前缀。 B) 领域模型命名规约 1) 数据对象:xxxDO,xxx即为数据表名。 2) 数据传输对象:xxxDTO,xxx为业务领域相关的名称。 3) 展现对象:xxxVO,xxx通常为网页名称。 4) POJO是DO/DTO/BO/VO的统称,禁止命名成xxxPOJO日志

四、long或者Long初始赋值时,使用大写的L,不能是小写的l代码规范

五、不要使用一个常量类维护全部常量,按常量功能进行归类,分开维护。对象

六、关于基本数据类型与包装数据类型的使用标准以下: 1) 【强制】全部的POJO类属性必须使用包装数据类型。 2) 【强制】RPC方法的返回值和参数必须使用包装数据类型。 3) 【推荐】全部的局部变量使用基本数据类型。 说明:POJO类属性没有初值是提醒使用者在须要使用时,必须本身显式地进行赋值,任何NPE问题,或者入库检查,都由使用者来保证。接口

七、【强制】定义DO/DTO/VO等POJO类时,不要设定任何属性默认值。资源

八、【强制】POJO类必须写toString方法。rem

九、【强制】关于hashCode和equals的处理,遵循以下规则: 1) 只要重写equals,就必须重写hashCode。 2) 由于Set存储的是不重复的对象,依据hashCode和equals进行判断,因此Set存储的对象必须重写这两个方法。 3) 若是自定义对象作为Map的键,那么必须重写hashCode和equals。 说明:String重写了hashCode和equals方法,因此咱们能够很是愉快地使用String对象做为key来使用。get

十、【强制】泛型通配符<? extends T>来接收返回的数据,此写法的泛型集合不能使用add方法,而<? super T>不能使用get方法,作为接口调用赋值时易出错。 说明:扩展说一下PECS(Producer Extends Consumer Super)原则:第1、频繁往外读取内容的,适合用<? extends T>。第2、常常往里插入的,适合用<? super T>。

十一、【强制】线程池不容许使用 【强制】线程池不容许使用 Executors 去建立,而是经过 去建立,而是经过 去建立,而是经过 ThreadPoolExecutor r的方式,这样 的方式,这样 的处理方式让写同窗更加明确线程池运行规则,避资源耗尽风险。

十二、【强制】类、类属性、类方法的注释必须使用Javadoc规范,使用/**内容*/格式,不得使用// xxx方式。

1三、【强制】在使用正则表达式时,利用好其预编译功能,能够有效加快正则匹配速度。 说明:不要在方法体内定义:Pattern pattern = Pattern.compile(规则);

1四、【强制】应用中不可直接使用日志系统(Log4j、Logback)中的API,而应依赖使用日志框架SLF4J中的API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger logger = LoggerFactory.getLogger(Abc.class);

1五、【强制】count(distinct col) 计算该列除NULL以外的不重复行数,注意 count(distinct col1, col2) 若是其中一列全为NULL,那么即便另外一列有不一样的值,也返回为0。 1六、【强制】当某一列的值全是NULL时,count(col)的返回结果为0,但sum(col)的返回结果为NULL,所以使用sum()时需注意NPE问题。 正例:可使用以下方式来避免sum的NPE问题:SELECT IF(ISNULL(SUM(g)),0,SUM(g)) FROM table;

相关文章
相关标签/搜索