2.常量规约

【推荐】如果变量值仅在一个范围内变化用Enum类。

如果还带有名称之外的延伸属性,必须使用Enum类,

下面正例中的数字就是延伸信息,表示星期几。

正例:

public Enum{ MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6), SUNDAY(7);}

3.格式规约

IDE的text file encoding设置为UTF-8; IDE中文件的换行符使用Unix格式,不要使用windows格式。

4.OOP规约

【强制】对外暴露的接口签名,原则上不允许修改方法签名,避免对接口调用方产生影响。接口过时必须加@Deprecated注解,并清晰地说明采用的新接口或者新服务是什么。

【强制】所有的相同类型的包装类对象之间值的比较,全部使用equals方法比较。 说明:对于Integer var=?在-128至127之间的赋值,Integer对象是在IntegerCache.cache产生,会复用已有对象,这个区间内的Integer值可以直接使用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑,推荐使用equals方法进行判断。

【强制】关于基本数据类型与包装数据类型的使用标准如下: 1) 所有的POJO类属性必须使用包装数据类型。 2) RPC方法的返回值和参数必须使用包装数据类型。 3) 所有的局部变量【推荐】使用基本数据类型。 说明:POJO类属性没有初值是提醒使用者在需要使用时,必须自己显式地进行赋值,任何NPE问题,或者入库检查,都由使用者来保证。 正例:数据库的查询结果可能是null,因为自动拆箱,用基本数据类型接收有NPE风险。 反例:比如显示成交总额涨跌情况,即正负x%,x为基本数据类型,调用的RPC服务,调用不成功时,返回的是默认值,页面显示:0%,这是不合理的,应该显示成中划线-。所以包装数据类型的null值,能够表示额外的信息,如:远程调用失败,异常退出。

【强制】定义DO/DTO/VO等POJO类时,不要设定任何属性默认值。

【强制】序列化类新增属性时,请不要修改serialVersionUID字段,避免反序列失败;如果完全不兼容升级,避免反序列化混乱,那么请修改serialVersionUID值。 说明:注意serialVersionUID不一致会抛出序列化运行时异常。

构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,请放在init方法中。

【强制】POJO类必须写toString方法。使用IDE的中工具:source> generate toString时,如果继承了另一个POJO类,注意在前面加一下super.toString。 说明:在方法执行抛出异常时,可以直接调用POJO的toString()方法打印其属性值,便于排查问题。

【推荐】使用索引访问用String的split方法得到的数组时,需做最后一个分隔符后有无内容的检查,否则会有抛IndexOutOfBoundsException的风险。

说明:

String str = "a,b,c,,";

String[] ary = str.split(",");

//预期大于3,结果是3

System.out.println(ary.length);

setter方法中,参数名称与类成员变量名称一致,this.成员名=参数名。在getter/setter方法中,尽量不要增加业务逻辑,增加排查问题的难度。

【推荐】final可提高程序响应效率,声明成final的情况: 1) 不需要重新赋值的变量,包括类属性、局部变量。 2) 对象参数前加final,表示不允许修改引用的指向。 3) 类方法确定不允许被重写。

【推荐】慎用Object的clone方法来拷贝对象。 说明:对象的clone方法默认是浅拷贝,若想实现深拷贝需要重写clone方法实现属性对象的拷贝。

【推荐】类成员与方法访问控制从严: 1) 如果不允许外部直接通过new来创建对象,那么构造方法必须是private。 2) 工具类不允许有public或default构造方法。 3) 类非static成员变量并且与子类共享,必须是protected。 4) 类非static成员变量并且仅在本类使用,必须是private。 5) 类static成员变量如果仅在本类使用,必须是private。 6) 若是static成员变量,必须考虑是否为final。 7) 类成员方法只供类内部调用,必须是private。 8) 类成员方法只对继承类公开,那么限制为protected。 说明:任何类、方法、参数、变量,严控访问范围。过宽泛的访问范围,不利于模块解耦。思考:如果是一个private的方法,想删除就删除,可是一个public的Service方法,或者一个public的成员变量,删除一下,不得手心冒点汗吗?变量像自己的小孩,尽量在自己的视线内,变量作用域太大,如果无限制的到处跑,那么你会担心的。

转载于:https://www.cnblogs.com/lakeslove/p/7223638.html

阿里巴巴Java开发手册(开发规范)——编程规约笔记相关推荐

  1. 开发手册——一、编程规约_8.注释规约

    这篇文章主要梳理了在java的实际开发过程中的编程规范问题.本篇文章主要借鉴于<阿里巴巴java开发手册终极版> 下面我们一起来看一下吧. 1. [强制]类.类属性.类方法的注释必须使用 ...

  2. 【Java】Java 开发手册以及规范

    Java 开发手册以及规范 一.编程规约 (一) 命名规约 1. [强制] 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束. 反例: name _name _name / __ ...

  3. 集合百家之面试!阿里巴巴Java突击手册(2021版)已完结

    今年的金三银四,对很多想改变现状的人来说非常关键.Java程序员也是如此. 无论你是镀金也好,还是追求高薪,进入阿里一直是大多Java程序员的一个目标.网上关于阿里的面试分享也层出不穷,让人目不暇接. ...

  4. 为什么阿里巴巴Java开发手册编码规范里推荐单个方法的总行数不超过80行

    该篇文章参考了: 1. 阿里巴巴<java开发手册>v1.5.0 华山版 2. <码出高效:Java开发手册> 单个方法的总行数不超过80行 在阿里巴巴<java开发手册 ...

  5. Java开发手册及规范

    前言 为了利于项目维护以及规范开发,促进成员之间Code Review的效率,故提出以下开发规范 根据约束力强弱, 规约依次分为强制.推荐.参考三大类: [强制]必须遵守,违反本约定或将会引起严重的后 ...

  6. idea 阿里巴巴规范插件_阿里巴巴 Java 开发者手册,编码事半功倍

    4月22日,阿里巴巴发布了泰山版<Java 开发手册>,以前以为终极版就真的是终极版了,没想到还是想的太简单了,继终极版之后又发布了详尽版.华山版,这不,泰山版又来了.想想也对,行业一直在 ...

  7. 《阿里巴巴Java工作手册》学习笔记

    2019独角兽企业重金招聘Python工程师标准>>> 最近浏览了一下阿里巴巴的Java开发手册,感觉内容确实非常的赞,发现了不少自己在编程中的误区,因此决定通过成文牢固掌握,文中将 ...

  8. 编程开发:Linux网络编程学习笔记

    非常全面.通俗易懂.值得借鉴的Linux网络编程学习笔记.关键字:linux linux编程 网络编程 linux网络编程 下载地址:点我下载 特别说明:本资源收集于网络,版权归原作者及版权商所有,仅 ...

  9. 回顾阿里巴巴Java开发手册中分层领域模型规约之DO,DTO,BO,AO,VO,POJO

    一 DO DO即Data Object:与数据库表结构一一对应,通过DAO层向上传输数据源对象. 二 DTO DTO即Data Transfer Object:数据传输对象,Service层向外传输的 ...

最新文章

  1. 1.6-puppet测试证书
  2. php 如何把u5fb,php如何将json中的unicode编码转为汉字?
  3. cross-compile/交叉编译 适用于ARM的ko文件
  4. inux读取ISO文件或是光驱的方法--挂载
  5. python列表输出斐波那契数列_Python|运用列表求斐波那契数列
  6. 大数据的价值与发展趋势
  7. SQL SERVER 2008 “阻止保存要求重新创建表的更改”
  8. mysql修改主键为unique_mysql 如何修改、添加、删除表主键及unique约束
  9. (转)美国:2016-2045新科技趋势报告
  10. 微信小程序项目源代码SSM校园生活小助手+后台
  11. OSPFv3报文格式与作用分析
  12. windows功能_支持 AirPlay/DLNA 功能的 Windows 影音播放软件 5KPlayer
  13. c语言rc,RC低通滤波器中R和C参数选择
  14. 想要成功,你得像剥洋葱一样一层一层地撕开自己
  15. odoo:开源 ERP/CRM 入门与实践 -- 上海嘉冰信息技术公司提供咨询服务
  16. 《九宫格记忆网配置使用说明》
  17. 在线播放.html,网页嵌入式SWF视频播放器
  18. 第5章 以太网与FlexRay
  19. Redis管道技术的使用
  20. 学生公寓管理系统-javaweb

热门文章

  1. 方维订餐系统二次开发,将商户的所有图片调到商铺详情里面
  2. mvc+ef中比较数据
  3. Team Foundation Server 源代码控制权限问题
  4. 神经网络其实并不需要那么深!普林斯顿大学英特尔提出ParNet,12层的网络就能达到80%以上的准确率!...
  5. 吞吐性能翻倍!搭载了第三代Tensor Core的A100是怎么做到的?
  6. 总奖池120万!中国“马栏山”杯国际音视频算法大赛启动
  7. 速来!视觉算法大奖赛,奖品丰厚、项目接地气!
  8. 机器学习如何用于芯片系统设计?《机器学习系统芯片设计》
  9. NeurIPS2019获奖论文!7篇论文斩获!微软华裔研究员斩获经典论文
  10. 小白视角来看传说中的卷积神经网络