当前位置: 首页 > news >正文

阿里巴巴 Java 开发手册--学习(一)

    今天开始学习阿里巴巴 Java 开发手册,规范自己的代码。看了规约中的规范,一些是自己知道的并遵守的。下面把自己在日常开发中忽略的部分记下来:

    编程规约之命名风格

    1、常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不能嫌名字长。

    2、抽象类命名使用 Abstract 或 Base 开头 ; 异常类命名使用 Exception 结尾 ; 测试类

   命名以它要测试的类的名称开始,以 Test 结尾。

    3、中括号是数组类型的一部分,数组定义如下: String[] args;不要使用String args[] 的方式来定义。

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

    5、如果模块、接口、类、方法使用了设计模式,在命名时体现出具体模式。例如:public class ResourceObserver;

    6、接口和实现类的命名有两套规则:

    1 )对于 Service 和 DAO 类,基于 SOA 的理念,暴露出来的服务一定是接口内部的实现类用 Impl 的后缀与接口区别

     例如CacheServiceImpl 实现 CacheService 接口。

    2 )如果是形容能力的接口名称,取对应的形容词做接口名 ( 通常是– able 的形式 )。例如:AbstractTranslator     实现  Translatable 。

    7、枚举类名建议带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。

    8、各层命名规约:
    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 。

      编程规约之常量定义

           1、如果变量值仅在一个范围内变化,且带有名称之外的延伸属性,定义为枚举类。下面正例中的数字就是延伸信息,表示星期几。

    正例: public Enum { MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6),

    SUNDAY(7);}

  编程规约之代码格式

         1、if / for / while / switch / do 等保留字与括号之间都必须加空格。

    2、注释的双斜线与注释内容之间有且仅有一个空格。

    3、单行字符数限制不超过 120 个,超出需要换行,换行时遵循如下原则:
    1) 第二行相对第一行缩进 4 个空格,从第三行开始,不再继续缩进。
    2 ) 运算符与下文一起换行。
    3 ) 方法调用的点符号与下文一起换行。
    4 ) 方法调用时,多个参数,需要换行时,在逗号后进行。

    5 ) 在括号前不要换行。

    4、方法参数在定义和传入时,多个参数逗号后边必须加空格。例如method("a", "b", "c");

  编程规约之OOP规约

    1、所有的覆写方法,必须加@ Override 注解。

   2、Object 的 equals 方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals。例如"test"     .equals(object);

    3、所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较。

    4、POJO 类必须写 toString 方法。

    编程规约之集合处理

    1、ArrayList 的 subList 结果不可强转成 ArrayList ,否则会抛出 ClassCastException异常

   2、在 subList 场景中,高度注意对原集合元素个数的修改,会导致子列表的遍历、增加、删除均会产生     ConcurrentModificationException 异常。

    3、使用集合转数组的方法,必须使用集合的 toArray(T[] array),传入的是类型完全一样的数组,大小就是        list.size() 。

    4、使用工具类 Arrays . asList() 把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出 UnsupportedOperationException 异常。

    5、不要在 foreach 循环里进行元素的 remove / add 操作。remove 元素请使用 Iterator方式,如果并发操作,需要对     Iterator 对象加锁。

    6、集合初始化时,指定集合初始值大小。

    7、使用 entrySet 遍历 Map 类集合 KV ,而不是 keySet 方式进行遍历。

    编程规约之并发处理

         1、线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。

    编程规约之控制语句

    1、 在一个 switch 块内,都必须包含一个 default 语句并且放在最后,即使它什么代码也没有。 

    编程规约之注释规约

    1、类、类属性、类方法的注释必须使用 Javadoc 规范,使用/**内容*/格式,不得使用。


相关文章:

  • zookeeper监控软件
  • 阿里巴巴 Java 开发手册--学习(二)
  • PTPX中的activity文件以及mapping文件
  • 阿里巴巴 Java 开发手册--学习(三)
  • 阿里巴巴 Java 开发手册--学习(四)
  • Selenium入门之元素的基本定位以及操作
  • 阿里规约插件的安装和使用
  • Tomcat结构及处理请求过程
  • Spark Rdd coalesce()方法和repartition()方法
  • 基于Oracle的SQL优化--学习(一)
  • 基于Oracle的SQL优化--学习(二)
  • MySQL案例-show fileds from 提示无权限
  • B+树的数据结构理解
  • 基于Oracle的SQL优化--学习(三)
  • 打 spice 的 deb 格式安装包的时遇到的问题和解决方法
  • 「面试题」如何实现一个圣杯布局?
  • 11111111
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • in typeof instanceof ===这些运算符有什么作用
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • java概述
  • Linux中的硬链接与软链接
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • node和express搭建代理服务器(源码)
  • php面试题 汇集2
  • sessionStorage和localStorage
  • webpack4 一点通
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 老板让我十分钟上手nx-admin
  • 面试总结JavaScript篇
  • 前端相关框架总和
  • MyCAT水平分库
  • 阿里云API、SDK和CLI应用实践方案
  • 函数计算新功能-----支持C#函数
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​configparser --- 配置文件解析器​
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • # .NET Framework中使用命名管道进行进程间通信
  • # 数据结构
  • #vue3 实现前端下载excel文件模板功能
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • $forceUpdate()函数
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .Net Web窗口页属性
  • .net(C#)中String.Format如何使用
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .Net小白的大学四年,内含面经
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • /boot 内存空间不够
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • [AX]AX2012 SSRS报表Drill through action