阿里巴巴开发规约

命名风格-------------------------------------------------
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集合的唯一性可以很好的对集合进行操作
  

发布了123 篇原创文章 · 获赞 80 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/m0_38101105/article/details/81139497