阿里巴巴开发规约

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

相关文章
|
监控 Java 数据库
|
Java Android开发 云栖大会
阿里巴巴Java开发规约插件
就在今天 10月14日上午9:00 阿里巴巴于在杭州云栖大会《研发效能峰会》上,正式发布《阿里巴巴Java开发手册》扫描插件,该插件在扫描代码后,将不符合《手册》的代码按Blocker/Critical/Major三个等级显示在下方,甚至在IDEA上,还基于Inspection机制提供了实时检测功能,编写代码的同时也能快速发现问题所在。
1220 0
|
5月前
|
设计模式 Java 关系型数据库
【阿里规约】阿里开发手册解读——命名规范篇
本文中所有代码命名规范遵循《阿里规约》,从包名、类名、变量名等角度展开,详细阐述测试类、枚举类、数组、布尔型变量、方法等元素的命名规范。
|
Java Spring 编译器
阿里巴巴开发规约之OOP规约
    1.避免用一个类的对象的引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问,     2.在使用参数时参数的对象避免是Object     3.
1566 0
|
存储 定位技术
阿里巴巴开发规约之对于集合的处理
1,只要重写等于就必须重写hashCode     2.因为set存储的是不重复对象,所以设置必须重写第1的两个方法    3.
980 0
|
前端开发 JavaScript rax
阿里巴巴前端规约及配套工具
「阿里巴巴前端规约」是在阿里经济体内广泛使用的一套前端编码和工程规范,致力于通过统一编码风格、普及最佳实践和代码缺陷检查帮助团队降低协作成本、提升前端项目的可维护性和稳定性。 本项目主要包括「规约文档」和「配套工具」两部分,目前只开放了「配套工具」部分,你可以使用 F2ELint 等配套工具来为项目接入规约
|
6月前
|
JSON 缓存 前端开发
阿里开发手册 嵩山版-编程规约 (十) 前后端规约
《阿里开发手册 嵩山版》中关于前后端规约的部分,涵盖了前后端交互的API设计、数据格式、错误处理、安全性等关键编程规约,目的是确保前后端开发高效协同,提升软件交付质量。
 阿里开发手册 嵩山版-编程规约 (十) 前后端规约
|
Java
《阿里巴巴Java开发规约》插件使用详细指南
阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的《阿里巴巴Java开发规约》扫描插件。今天就为大家详细介绍一下IDEA插件与Eclipse插件的安装使用。
16746 2
《阿里巴巴Java开发规约》插件使用详细指南
|
Web App开发 Java Android开发
阿里巴巴Java开发规约插件使用
就在今天 10月14日上午9:00 阿里巴巴于在杭州云栖大会《研发效能峰会》上,正式发布《阿里巴巴Java开发手册》扫描插件,该插件在扫描代码后,将不符合《手册》的代码按Blocker/Critical/Major三个等级显示在下方,甚至在IDEA上,还基于Inspection机制提供了实时检测功能,编写代码的同时也能快速发现问题所在。
1999 0
|
Java Android开发 p3c
《阿里巴巴Java开发规约》插件使用介绍
一、简介     阿里巴巴于10月14日在杭州云栖大会上,正式发布了《阿里巴巴Java开发规约》扫描插件!该插件基于《阿里巴巴Java开发规约》手册内容,在扫描代码后,将不符合规约的代码按Blocker/Critical/Major三个等级显示在下方,甚至在IDEA上,还基于Inspection机制提供了实时检测功能,编写代码的同时也能快速发现问题所在。
4053 0