Java_开发手册_48页_1mb
报告摘要
《Java开发手册》华山版 1.5.0 总结
核心内容
《Java开发手册》华山版是阿里巴巴集团技术团队与Java社区开发者共同编写的规范文档,旨在提升代码质量、提高开发效率。手册分为七个主要维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约,每个维度下包含若干子目录。根据约束力强弱,规约分为强制、推荐和参考三类,分别对应必须遵守、建议遵守和可参考的规范。
主要观点
命名风格
- 代码中的命名不能以
_或$开始或结束。 - 命名应使用英文,避免拼音和中文混合,避免纯拼音命名。
- 类名使用
UpperCamelCase,方法名、参数名、成员变量、局部变量使用lowerCamelCase。 - 常量命名全部大写,单词间用下划线隔开。
- 抽象类使用
Abstract或Base开头,异常类以Exception结尾,测试类以Test结尾。 - 数组定义时,类型与中括号紧挨相连。
异常处理
- 不应通过
catch处理可以通过预检查规避的RuntimeException。 - 异常不能用于流程控制。
- 捕获异常后,若需回滚事务,必须手动回滚。
finally块必须关闭资源对象,不能使用return。- 捕获异常时,应完全匹配或为抛出异常的父类。
- 调用RPC、二方包或动态生成类的方法时,必须使用
Throwable捕捉异常。
单元测试
- 单元测试是提升代码质量的重要手段,应遵循相关规范进行编写。
安全规约
- 应避免使用不安全的代码方式,如没有鉴权的代码。
- 使用安全的类和方法,如
Objects.equals替代equals。
MySQL数据库
- 建表、索引、SQL语句、ORM映射等应遵循规范。
- 避免不规范的SQL语句,如使用
SELECT *。 - 使用
PreparedStatement避免 SQL 注入。
工程结构
- 应采用清晰的分层结构,如 Service/DAO 层。
- 二方库依赖应统一管理。
- 服务器配置应统一,避免混乱。
设计规约
- 使用设计模式时,应体现在命名中,提高可读性。
- 接口和实现类的命名应遵循一定的规则。
关键信息
常量定义
- 不允许魔法值直接出现在代码中。
long或Long类型赋值时,使用大写的L。- 常量应按功能分类,避免大而全的常量类。
- 变量值在固定范围内变化时,使用
enum类型。
代码格式
- 大括号内为空时,写成
{};非空时遵循缩进和换行规范。 - 二目、三目运算符左右需加空格。
- 使用 4 个空格缩进,禁止使用
tab。 - 单行字符数不超过 120,超出需换行。
- 方法参数定义和传入时,逗号后加空格。
集合处理
hashCode和equals方法必须同时覆写。ArrayList的subList是原列表的视图,不能强转为ArrayList。Map的keySet()、values()、entrySet()不可进行添加元素操作。- 使用
entrySet遍历Map,效率更高。 - 集合初始化时应指定初始大小,避免频繁扩容。
- 集合中注意
null值的存储规则。
并发处理
- 获取单例对象时,要保证线程安全。
- 使用有意义的线程名称,方便排查问题。
- 线程池应通过
ThreadPoolExecutor创建,避免使用Executors。 SimpleDateFormat是线程不安全的,避免定义为static。ThreadLocal变量应回收,避免内存泄漏。- 使用
synchronized或ReentrantLock保证线程安全。 CountDownLatch用于异步转同步操作。- 使用
volatile或Atomic类型处理并发状态。
控制语句
switch块中每个case需要break或return,或注释说明继续执行。switch中若变量为String且为外部参数,需先进行null判断。if/else、for/while/do语句中必须使用大括号。- 避免使用
!=或==判断条件作为中断条件,建议使用区间判断。 - 使用卫语句、策略模式、状态模式等优化多层
if-else。 - 避免在条件表达式中插入赋值语句。
- 避免使用取反逻辑,应使用正向逻辑。
注释规约
- 类、类属性、类方法必须使用 Javadoc 注释,格式为
/**...*/。 - 抽象方法必须有 Javadoc 注释,说明其功能。
- 所有类应添加创建者和创建日期。
- 方法内部注释应使用
//,多行注释使用/* */。 - 枚举字段必须有注释说明用途。
- 注释应准确反映设计思想和代码逻辑,避免过多或过少。
- 注释应说明注释掉代码的理由,统一使用
//。
其它
- 使用正则表达式时,应预编译以提高性能。
- Velocity 模板中调用 POJO 属性时,使用属性名,自动调用
getXxx()。 - 向页面传递变量时,应使用
$!{var}避免null。 - 使用
Math.random()时注意其返回值范围和精度问题。 - 获取当前时间时,使用
System.currentTimeMillis(),若需纳秒级精度使用System.nanoTime()。 - 日期格式化时,年份使用小写
y,月份使用大写M,分钟使用小写m。 - 避免在视图模板中加入复杂逻辑。
- 数据结构初始化时应指定大小,避免内存溢出。
- 及时清理不再使用的代码段或配置信息。
总结
《Java开发手册》华山版提供了全面、详细的开发规范,涵盖命名、异常处理、集合操作、并发处理、控制语句、注释等多个方面。手册强调代码的可读性、可维护性与稳定性,提倡使用标准的命名规范、避免魔法值、合理使用集合与并发工具,以及规范注释和代码结构。其核心目标是“码出高效,码出质量”,帮助开发者提升代码质量和开发效率,避免常见错误和性能问题。
展开完整摘要
试读结束,高清完整版pdf/doc/ppt,请点下载