没有合适的资源?快使用搜索试试~ 我知道了~
首页阿里巴巴Java开发手册:编程规约与最佳实践
阿里巴巴Java开发手册:编程规约与最佳实践
需积分: 37 17 下载量 13 浏览量
更新于2024-07-17
收藏 1.42MB PDF 举报
"Java开发手册.pdf" 阿里巴巴的《Java开发手册》是技术团队的经验结晶,旨在提高Java开发的效率和质量。手册包含了多个维度的知识点,不仅关注编程本身,还包括了异常日志处理、单元测试、安全性、数据库设计、工程结构和设计原则等多个方面。这些内容都是基于实际的一线开发经验和社区反馈不断修订和完善而来的。 手册分为强制、推荐和参考三大类别,以指导开发者遵循最佳实践。"说明"部分提供了规约的背景和解释,"正例"展示正确的编码方式,而"反例"则警告开发者避免犯错。通过这种方式,手册旨在限制过度个性化,提高协同开发的效率,并减少沟通成本。 编程规约部分详细涵盖了命名风格、常量定义、代码格式、面向对象编程(OOP)规范、集合处理、并发处理以及控制语句等关键领域。命名风格强调一致性、可读性和可理解性;常量定义应遵循明确、无歧义的规则;代码格式的规约确保了代码的整洁和可维护性;OOP规约涉及类的设计、继承和封装;集合处理部分涵盖了数据结构的选择和优化;并发处理章节讨论了多线程安全和性能优化;控制语句的规约则关注代码的逻辑清晰和可读性。 此外,手册还提及了配套的IDE插件和云效集成的代码规约扫描引擎,以自动化检查和改进代码质量。《码出高效》这本书作为手册的补充,深入解析了计算机基础、JVM、数据结构、并发、单元测试等相关主题,以帮助开发者提升技能并避免实践中常见的问题。 《Java开发手册》是Java开发者的重要参考资料,它不仅提供了具体的编码指导,还强化了软件开发的整体意识,包括安全性、性能和可维护性。遵循手册中的规约,开发者可以更好地写出高效、高质量的代码,促进团队合作,提升软件项目的稳定性和可靠性。
资源详情
资源推荐
Java 开发手册
6/44
7. 【强制】在进行类型强制转换时,右括号与强制转换值之间不需要任何空格隔开。
正例:
long first = 1000000000000L;
int second = (int)first + 2;
8. 【强制】单行字符数限制不超过 120 个,超出需要换行,换行时遵循如下原则:
1)第二行相对第一行缩进 4 个空格,从第三行开始,不再继续缩进,参考示例。
2)运算符与下文一起换行。
3)方法调用的点符号与下文一起换行。
4)方法调用中的多个参数需要换行时,在逗号后进行。
5)在括号前不要换行,见反例。
正例:
StringBuilder sb = new StringBuilder();
// 超过 120 个字符的情况下,换行缩进 4 个空格,点号和方法名称一起换行
sb.append("Jack").append("Ma")...
.append("alibaba")...
.append("alibaba")...
.append("alibaba");
反例:
StringBuilder sb = new StringBuilder();
// 超过 120 个字符的情况下,不要在括号前换行
sb.append("Jack").append("Ma")...append
("alibaba");
// 参数很多的方法调用可能超过 120 个字符,不要在逗号前换行
method(args1, args2, args3, ...
, argsX);
9. 【强制】方法参数在定义和传入时,多个参数逗号后边必须加空格。
正例:下例中实参的 args1,后边必须要有一个空格。
method(args1, args2, args3);
10. 【强制】IDE 的 text file encoding 设置为 UTF-8; IDE 中文件的换行符使用 Unix 格式,不
要使用 Windows 格式。
11. 【推荐】单个方法的总行数不超过 80 行。
说明:除注释之外的方法签名、左右大括号、方法内代码、空行、回车及任何不可见字符的总行数不超过
80 行。
正例:代码逻辑分清红花和绿叶,个性和共性,绿叶逻辑单独出来成为额外方法,使主干代码更加清晰;
共性逻辑抽取成为共性方法,便于复用和维护。
12. 【推荐】没有必要增加若干空格来使变量的赋值等号与上一行对应位置的等号对齐。
正例:
int one = 1;
long two = 2L;
float three = 3F;
StringBuilder sb = new StringBuilder();
单个方法总行数不超过80行
Java 开发手册
7/44
说明:增加 sb 这个变量,如果需要对齐,则给 one、two、three 都要增加几个空格,在变量比较多的情
况下,是非常累赘的事情。
13. 【推荐】不同逻辑、不同语义、不同业务的代码之间插入一个空行分隔开来以提升可读性。
说明:任何情形,没有必要插入多个空行进行隔开。
(四) OOP 规约
1. 【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析
成本,直接用类名来访问即可。
2. 【强制】所有的覆写方法,必须加@Override 注解。
说明:getObject()与 get0bject()的问题。一个是字母的 O,一个是数字的 0,加@Override 可以准确判
断是否覆盖成功。另外,如果在抽象类中对方法签名进行修改,其实现类会马上编译报错。
3. 【强制】相同参数类型,相同业务含义,才可以使用 Java 的可变参数,避免使用 Object。
说明:可变参数必须放置在参数列表的最后。(提倡同学们尽量不用可变参数编程)
正例:public List<User> listUsers(String type, Long... ids) {...}
4. 【强制】外部正在调用或者二方库依赖的接口,不允许修改方法签名,避免对接口调用方产
生影响。接口过时必须加@Deprecated 注解,并清晰地说明采用的新接口或者新服务是什
么。
5. 【强制】不能使用过时的类或方法。
说明:java.net.URLDecoder 中的方法 decode(String encodeStr) 这个方法已经过时,应该使用双参数
decode(String source, String encode)。接口提供方既然明确是过时接口,那么有义务同时提供新的接
口;作为调用方来说,有义务去考证过时方法的新实现是什么。
6. 【强制】Object 的 equals 方法容易抛空指针异常,应使用常量或确定有值的对象来调用
equals。
正例:"test".equals(object);
反例:object.equals("test");
说明:推荐使用 java.util.Objects#equals(JDK7 引入的工具类)。
7. 【强制】所有整型包装类对象之间值的比较,全部使用 equals 方法比较。
说明:对于 Integer var = ? 在-128 至 127 范围内的赋值,Integer 对象是在 IntegerCache.cache 产
生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行判断,但是这个区间之外的所有数
据,都会在堆上产生,并不会复用已有对象,这是一个大坑,推荐使用 equals 方法进行判断。
8. 【强制】浮点数之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能用
equals 来判断。
说明:浮点数采用“尾数+阶码”的编码方式,类似于科学计数法的“有效数字+指数”的表示方式。二进
一般使用常量或者有确定值的对
象来调用equals方法。
不能用不确定值来调用equals方
法,很可能引起空指针异常
浮点数的等值比较,不能用==或者equals()
剩余47页未读,继续阅读
NoBug1
- 粉丝: 7
- 资源: 22
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- JDK 17 Linux版本压缩包解压与安装指南
- C++/Qt飞行模拟器教员控制台系统源码发布
- TensorFlow深度学习实践:CNN在MNIST数据集上的应用
- 鸿蒙驱动HCIA资料整理-培训教材与开发者指南
- 凯撒Java版SaaS OA协同办公软件v2.0特性解析
- AutoCAD二次开发中文指南下载 - C#编程深入解析
- C语言冒泡排序算法实现详解
- Pointofix截屏:轻松实现高效截图体验
- Matlab实现SVM数据分类与预测教程
- 基于JSP+SQL的网站流量统计管理系统设计与实现
- C语言实现删除字符中重复项的方法与技巧
- e-sqlcipher.dll动态链接库的作用与应用
- 浙江工业大学自考网站开发与继续教育官网模板设计
- STM32 103C8T6 OLED 显示程序实现指南
- 高效压缩技术:删除重复字符压缩包
- JSP+SQL智能交通管理系统:违章处理与交通效率提升
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功