阿里Java编码规范摘要
来源:互联网 发布:硬笔行书知乎 编辑:程序博客网 时间:2024/06/05 13:21
一、编码规约
1. 命名约定
1. 类名使用UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外:(领域模型 的相关命名)DO/ BO / DTO / VO等
2. 抽象类命名使用Abstract 或 Base 开头;异常类命名使用Exception 结尾;测试类 命名以它要测试的类的名称开始,以Test 结尾,枚举类名建议带上Enum 后缀
3. 包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词
2.常量定义
1. long或者 Long 初始赋值时,必须使用大写的 L
3.格式约定
4. OOP规约
1. 所有的相同类型的包装类对象之间值的比较,全部使用equals方法比较
2. POJO类必须写 toString 方法
3. 循环体内,字符串的连接方式,使用StringBuilder 的 append 方法进行扩展(反编译出的字节码文件显示每次循环都会new 出一个StringBuilder对象)
4. 慎用 Object 的 clone 方法来拷贝对象(浅拷贝)
5.集合处理
1. 只要重写equals,就必须重写hashCode
2.使用entrySet 遍历 Map 类集合 KV,而不是keySet 方式进行遍历
6.并发处理
7.控制语句
8.注释规约
9.其他
二、异常日志
1.异常处理
1.Java类库中定义的一类 RuntimeException 可以通过预先检查进行规避,而不应该 通过catch来处理,比如:IndexOutOfBoundsException,NullPointerException等等
2.禁止对大段代码进行try-catch,这是不负责任的表现
3.禁止在 finally 块中使用 return,finally 块中的 return 返回后方法结束执行,不 会再执行 try 块中的 return 语句
4.定义时区分unchecked / checked 异常,避免直接使用 RuntimeException 抛出, 更不允许抛出 Exception 或者 Throwable,应使用有业务含义的自定义异常
2.日志规约
1.对trace/debug/info级别的日志输出,必须使用条件输出形式或者使用占位符的方式
2.谨慎地记录日志。生产环境禁止输出debug 日志;有选择地输出info 日志;如果使 用warn 来记录刚上线时的业务行为信息,一定要注意日志输出量的问题, 避免把服务器磁盘 撑爆,并记得及时删除这些观察日志
三、MySQL规约
1. 建表规约
1.表名、字段名必须使用小写字母或数字;禁止出现数字开头,禁止两个下划线中间只 出现数字
2.唯一索引名为 uk_字段名;普通索引名则为idx_字段名
3.表必备三字段:id (unsigned bigint) ,gmt_create,gmt_modified
4.单表行数超过500 万行或者单表容量超过 2GB,才推荐进行分库分表
2.索引规约
1. 建组合索引的时候,区分度最高的在最左边, 最左前缀原则
3.SQL规约
1. count(*)会统计值为NULL 的行,而 count(列名)不会统计此列为NULL 值的行
2. 当某一列的值全是NULL 时,count(col)的返回结果为0,但sum(col)的返回结果为NULL,因此使用sum()时需注意NPE 问题,可以使用如下方式来避免sum的NPE问题: SELECT IF(ISNULL(SUM(g)),0,SUM(g)) FROM table
4.ORM规约
四、工程规约
1.应用分层
- 开放接口层: 可直接封装Service 接口暴露成 RPC 接口;通过Web 封装成 http 接口;网关控 制层等。
- 终端显示层:各个端的模板渲染并执行显示层。当前主要是velocity 渲染,JS渲染,JSP渲 染,移动端展示层等。
- Web层(Controller):主要是对访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等。
- Service层:相对具体的业务逻辑服务层。
- Manager层:通用业务处理层,它有如下特征:
1)对第三方平台封装的层,预处理返回结果及转化异常信息;
2)对Service层通用能力的下沉,如缓存方案、中间件通用处理;3)与DAO层交互,对DAO的业务通用能力的封装。 - DAO层: 数据访问层,与底层 MySQL、Oracle、Hbase进行数据交互。
- 外部接口或第三方平台:包括其它部门RPC 开放接口,基础平台,其它公司的 HTTP 接口
2. 分层领域模型规约:
DO(Data Object):与数据库表结构一一对应,通过DAO 层向上传输数据源对象。
DTO(Data Transfer Object):数据传输对象,Service和 Manager 向外传输的对象。
- BO(Business Object):业务对象。可以由Service 层输出的封装业务逻辑的对象。
- QUERY:数据查询对象,各层接收上层的查询请求。注:超过2 个参数的查询封装,禁止 使用 Map 类来传输。
- VO(View Object):显示层对象,通常是Web 向模板渲染引擎层传输的对象
2.二方库规约
3.服务器规约
五、安全规约
阅读全文
1 0
- 阿里Java编码规范摘要
- 《阿里JAVA编码规范》读后笔记
- 阿里用的java编码规范积累
- 阿里编码规范
- 《C++编码规范》读书摘要
- 阿里java编码规范(三)控制语句,注释规约
- 阿里java规范整理
- JAVA阿里规范手册
- 阿里java编程规范
- Eclipse安装阿里编码规范插件
- java编码规范--命名规范
- 阿里JAVA开发手册重点摘要
- 阿里java编码规范(一)命名风格,常量定义,和代码格式
- Eclipse-Java代码规范和质量检查插件-阿里编码规约
- 阿里java开发编程规范
- 解析阿里java编程规范
- 编码规范(二)----JAVA编码规范插件
- Java编程规范——重点摘要
- Android中线程详解
- 几个算法知识
- 六,闭包,尾递归,高阶函数,偏函数等
- Cocos2d-x 3.x 全平台(Android,iOS)新手开发配置教程攻略
- SQL数据库连接问题
- 阿里Java编码规范摘要
- 解决:maven项目启动报错org.apache.jasper.compiler.JDTCompiler$1 findType
- 剑指offer第二题 替换空格 Java实现
- linux上部署项目及常用命令
- 调用linux 内核模块测试
- android json 解析
- Linux 内核剖析
- 数据库-基础查询语句详解
- Spring bean 的5个作用域 Spring Bean的默认作用域为:singleton。它相比其他作用域的优点是系统开销小,Bean实例一旦创建成功便可重复使用。 1.singleton作用域