Java杂谈之开发规范

[开源中国]:Java杂谈之开发规范

  • 一、命名规范
  1. 所有命名不用特殊字符、拒绝使用不规范的缩写。
  2. 严禁使用拼音与英文混搭的方式命名。
  3. 方法名、参数名、成员变量、局部变量:小驼峰(拒绝使用中划线、下划线隔开多个单词的方式)。
  4. 类名:大驼峰(领域模型的命名除外:DTO、DAO等)。
  5. 包名全部使用小写。
  6. 常量命名全部大写下划线隔开,力求语义表达完整清楚。
  7. 抽象类命名使用Abstract或Base开头(例如:AbstractConStant、BaseService、BaseController)。
  8. 特殊类命名要有特殊标示结尾(例如:拦截类LoginInterceptor、异常捕获类EnterpriseCommonException)。
  9. 数组类命名统一使用String[] args(不使用C语言风格的命名 String args[] )。
  10. 任何布尔类型的变量不要加is开头,(例如 isSuccess,生成方法isSuccess(),RPC框架例如Thrift在做反向解析时会映射成变量名success)。

  • 二、常量定义规范
  1. 定义常量类、拒绝使用魔法值。
  2. 常量类应按照复用层次、功能进行归类.(例如:RedisConstant、ConfigConstant)
  3. final提高响应效率

  • 三、格式规范(code-style定义)
  1. 代码块缩进4个空格,如果使用tab缩进,请设置成1个tab为4个空格
  2. 运算符左右必须使用一个空格(例如:if (flag == 0))
  3. 每行字符数限制不超过120个,超出需要换行(import除外)。运算符、方法调用.放到下一行
  4. 每个方法要做到小而精,有效代码尽量不超过20行。(代码编写的15行原则、推荐阅读《质量·软件·管理——系统思维》代码复杂度与代码行数的关系)

  • 四、面向对象规范
  1. 可变参数方法必须是相同类型参数、相同业务含义,可变参数放到最后(例如:public Enterprise getEnterprise(String Status,Integer …ids) )
  2. 集合(容器)数据类型初始化尽量设置合理初始值避免频繁扩容(例如:Map子类族的哈希碰撞再散列问题、List子类族的复制扩容都很消耗性能)
  3. 包装类对象值比较使用eques(),切格式一定要使用 “常量”.eques(变量)(Integer包装类值超出-128至127范围的对象在堆内存产生,拒绝使用==)
  4. 所有局部变量都应该使用基本数据类型,所有POJO类属性变量都必须使用包装类数据类型(涉及到数据库空数据拆箱)
  5. Java序列化方式,修改类属性时,必须不能修改serialVersionUID否则造成历史数据不能反序列化(例如redis缓存数据的反序列化)。
  6. import 拒绝使用通配符, 例如:import java.util.concurrent.; import com.ikang.enterprise.core.persistence.;
  7. 对可能抛出的异常要及时捕获,而不是向上一级抛出,捕获的异常一定要做相应的处理,捕获异常要用适当的异常类而不是一概用父类Exception。
  8. 使用泛型可以提高编码的复用性,但是慎用带通配符的泛型方法 通配符限制了一些泛型方法的使用,上下边界通配符使用不当可能引起不必要的问题。

  • 五、程序员基本功--避免NPE
  1. 实用对象方法时,先判断对象非空、参数使用前先判空
  2. 任何NPE问题,或者入库检查,都由使用者来保证
  3. 参数重复校验问题:循环调用的方法不推荐参数校验,而是注释调用方外部参数校验,底层方法可以不校验,service层方法强校验

JavaEE8规范(甲骨文出品)->>点击下载


常用安全的并发集合类:Concurrent族、写时复制CopyOnWrite族、阻塞队列BlockingQueue族

原子类:Atomic族 常用的线程池:ThreadPoolExecutor、Executors

常用锁:Sychronized、ReentrantLock、ReentrantReadWriteLock等,但推荐使用无锁编程(原子加、环形缓冲区、RCU、CAS)

运用第三方类库可以有效减少编写复杂度,同时避免不必要的异常,推荐Google Guava

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值