阿里巴巴开发规约

简介: 命名风格-------------------------------------------------UserDO而不是UserDo方法名,成员变量名,局部变量名,参数名统一用lowerCamelCase驼峰标识常量全部大写用下划线隔开,并且力求语意完整,不论多长,boolean类型的常量不要加is前缀,否则容易引起框架异常,为了代码自解释的目的,定义变量时尽量写全名如果接口,类,方法使用了设计模式,那么对应的名字也要包含设计模式的名字,以便理解。

命名风格-------------------------------------------------
UserDO而不是UserDo
方法名,成员变量名,局部变量名,参数名统一用lowerCamelCase驼峰标识
常量全部大写用下划线隔开,并且力求语意完整,不论多长,
boolean类型的常量不要加is前缀,否则容易引起框架异常,
为了代码自解释的目的,定义变量时尽量写全名
如果接口,类,方法使用了设计模式,那么对应的名字也要包含设计模式的名字,以便理解。
接口中的方法不要加任何修饰符(public也不要加)为了简介,尽量不要在接口中定义变量,要加接口中方法注释
枚举类名字带有Enum后缀,其成员变量是特殊的常量
获取单个对象用get作为前缀,获取多个对象用list作为前缀,获取统计值用count作为前缀,插入用save/insert作为前缀
删除用remove/delete作为前缀
数据对象:xxxDO,xxx是数据表名,禁止用xxxPOJO命名
常量风格----------------------------------------------------


代码格式:
    如果括大号内没内容那么不换行,
    小括号变量不能与括号有空格
    if/for/while/switch/do等保留字与括号之间必须加空格
    二目和三目的运算符左右两边都要加一个空格如= + && - 
    单行超出120个字符需要换行,换行时第一行缩进4个字符以后每行与换行后的第一行保持一致
    注意换行时必须缩进4个字符,逗号后进行换行,括号前不要换行
    方法传入多个参数时,多个参数的逗号后必须换行
    
    
OOP规约
    1.避免用一个类的对象的引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问,
    2.在使用参数时参数的对象避免是Object
    3.Object的equals方法容易抛出空指针,应使用常量或者确定的量来调用
    如“test”.equals(object);
    4.相同类型的包装类对象之间的值比较必须用equals方法进行,用 == 有大坑,
    5.POJO:普通的Java对象,把有getter/setter方法的Java对象成为POJO,通常这个是和数据库表联系起来的,
    规定:所有的POJO类属性必须使用包装数据类型,
    RPC方法的返回值和参数必须使用包装类型,RPC即Dubbo , Spring Cloud
    所有的局部变量使用基本数据类型
    6.构造方法中禁止加入任何的业务逻辑,如果有就加入到init方法中
    7.POJO必须写toString方法
    8.String的split最后一个分隔符需做有无内容的检查
    9.不要在this.成员变量名 = 参数名使用业务逻辑,增加排查问题的难度,
    10.循环类内字符串的连接方法用StringBuilder的append方法进行扩展
    11.慎用Object的clone的方法拷贝对象,一般都是浅拷贝,要想深拷贝要重写这个clone的方法
    12.如果不允许外部直接通过new来创建对象,那么构造方法必须是private
    
    
对于集合的处理
    1,只要重写equals就必须重写hashCode
    2.因为set存储的是不重复对象,所以set必须重写第1的两个方法
    3.如果自定义的对象作为主键那么必须重写第1的方法
    4.使用了subList那么对于园集合的操作会使子列表错误
    5.使用集合转数组的方法,必须使用toArray(T[] array),传入的类型必须一样,大小就是list.size()
    List<String> list = new ArrayList<String>(2);
    list.add("guan");
    list.add("bao");
    String[] array = new String[list.size()];
    array = list.toArray(array);
    6.数组转集合是Arrays.asList();这只是个转接口,不能对转的集合进行CRUD,因为转过来的集合不是一般的集合
    它没有CRUD的方法
    7.泛型通配符,<? extends T>这样写法的泛型集合没有add方法,适合往外读数据,而<? super T> 没有get方法,适合插入数据
    8.在foreach循环里进行元素的remove/add操作,remove请使用Iterator
    Iterator<String> iterator = list.iterator();
    while (iterator.hasNext()){
        String item = iterator.next();
        if (删除的条件) {
            iterator.remove();
        }
    }
    9.集合初始化时指定好初始化的值
    10.使用entrySet遍历Map类集合KV,而不是keySet方式进行遍历,这是因为前者遍历一次,后者遍历两次
    jdk8使用map.foreach方法
    11.HashMap的key和Value允许为空
    12.利用set集合的唯一性可以很好的对集合进行操作
    
控制语句
    1.不要在条件判断里执行复杂语句,把条件判断赋值给一个boolean类型的变量

相关文章
|
存储 Oracle 关系型数据库
HBase集群环境搭建与测试(上)
HBase集群环境搭建与测试
378 0
|
8月前
|
存储 设计模式 缓存
5分钟迅速掌握领域驱动设计的40个关键概念
本文对《领域驱动设计-软件复杂性应对之道》一书进行高度凝练,梳理了领域驱动设计的架构图、基本要素和重要概念。从细节入手,以小见大,你想知道的定义,这里都有。
227 11
|
存储 关系型数据库 MySQL
【阿里规约】阿里开发手册解读——数据库和ORM篇
从命名规范、建表规范、查询规范、索引规范、操作规范等角度出发,详细阐述MySQL数据库使用过程中所需要遵循的各种规范。
【阿里规约】阿里开发手册解读——数据库和ORM篇
日志框架log4j打印异常堆栈信息携带traceId,方便接口异常排查
日常项目运行日志,异常栈打印是不带traceId,导致排查问题查找异常栈很麻烦。
Exception in thread "main" java.lang.IllegalArgumentException: U+6570 ('.notdef') is not available in the font Helvetica-Bold, encoding: WinAnsiEncoding 这个问题如何解决
【6月更文挑战第19天】Exception in thread "main" java.lang.IllegalArgumentException: U+6570 ('.notdef') is not available in the font Helvetica-Bold, encoding: WinAnsiEncoding 这个问题如何解决
2561 2
|
存储 JavaScript 前端开发
NPM进阶知识与用法详解(一)
NPM进阶知识与用法详解(一)
370 0
|
监控 安全 Java
Spring Boot优雅Shutdown时异步线程安全优化
Spring Boot优雅Shutdown时异步线程安全优化
电子书阅读分享《Java开发手册(泰山版)》
电子书阅读分享《Java开发手册(泰山版)》
电子书阅读分享《Java开发手册(泰山版)》
|
安全 Java 编译器
JDK11 介绍讲解,语法改进,API增强
JDK 11进一步完善了JDK 9引入的模块化系统。模块化系统允许开发人员将代码和依赖项组织成模块,以提高可维护性、安全性和性能。开发人员可以使用`module`关键字定义模块,并使用`requires`和`exports`语句来声明模块之间的依赖关系和对外暴露的API。模块化系统还提供了更细粒度的访问控制,可以限制对模块中的内部API的访问。
413 0
|
安全 Java 关系型数据库
《Java开发手册(嵩山版)》电子版地址
《Java开发手册(嵩山版)》经过不断地精进与苦练终于出山啦,它的内功提升之处在于依据约束力强弱及故障敏感性,规约依次分为【强制】、【推荐】、【参考】三大类。祝各位码林高手能够码出高效,码出质量!
644 0
《Java开发手册(嵩山版)》电子版地址

热门文章

最新文章