阿里巴巴开发规约

简介: 命名风格-------------------------------------------------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类型的变量

相关文章
阿里巴巴开发规约之代码格式
    1.如果括大号内没内容那么不换行,     2.小括号变量不能与括号有空格     3.如果/对/同时/开关/做保留等字与括号之间必须加空格     4.
1338 0
|
6月前
|
API 开发工具
【平台开发】技术整合思考(六)开发规范(持续更新)
【平台开发】技术整合思考(六)开发规范(持续更新)
41 0
|
8月前
|
存储 缓存 IDE
Java编程规约(源于阿里,精简版)
Java编程规约(源于阿里,精简版)
530 0
|
10月前
|
存储 SQL 缓存
【阿里巴巴Java编程规范学习 五】MySQL数据库规约
【阿里巴巴Java编程规范学习 五】MySQL数据库规约
1306 1
|
11月前
|
XML JSON 缓存
阿里Java编程规约【十】 前后端规约
阿里Java编程规约【十】 前后端规约
540 0
|
Java
《阿里巴巴Java开发规约》插件使用详细指南
阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的《阿里巴巴Java开发规约》扫描插件。今天就为大家详细介绍一下IDEA插件与Eclipse插件的安装使用。
14177 1
《阿里巴巴Java开发规约》插件使用详细指南
|
Java 测试技术 API
项目架构级别规约框架Archunit调研
最近在做一个新项目的时候引入了一个架构方面的需求,就是需要检查项目的编码规范、模块分类规范、类依赖规范等,刚好接触到,正好做个调研。
273 0
项目架构级别规约框架Archunit调研
|
设计模式 数据可视化 安全
《阿里巴巴Java开发手册v1.2》解析(编程规约篇)
之前在乐视天天研究各种底层高大上的东西,因为我就一个人,想怎么弄怎么弄。如今来了新美大,好好研读一下《阿里巴巴Java开发手册v1.2》。还要对这么看似简单的东西解析一番。毕竟现在带团队,讲究团队合作。现在项目稍微有点乱,早统一,代价越低。别问我乐视是不是不行了。乐视好的很,已经到了谷底,该反弹了,看好乐视。我离开是因为自己的技术瓶颈,要是乐视像去年发展的那么好,我估计离开的更早。
|
存储 SQL JSON
开发规约的意义与细则
开发规约的意义与细则
475 0
开发规约的意义与细则