Java杂谈之开发规范

【CSDN】:Java杂谈之开发规范java

 

  • 1、命名规范
  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)。
  • 2、常量定义规范
  1. 定义常量类、拒绝使用魔法值。
  2. 常量类应按照复用层次、功能进行归类.(例如:RedisConstant、ConfigConstant)
  3. final提升响应效率
  • 3、格式规范(code-style定义)
  1. 代码块缩进4个空格,若是使用tab缩进,请设置成1个tab为4个空格
  2. 运算符左右必须使用一个空格(例如:if (flag == 0))
  3. 每行字符数限制不超过120个,超出须要换行(import除外)。运算符、方法调用.放到下一行
  4. 每一个方法要作到小而精,有效代码尽可能不超过20行。(代码编写的15行原则、推荐阅读《质量·软件·管理——系统思惟》代码复杂度与代码行数的关系)
  • 4、面向对象规范
  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. 使用泛型能够提升编码的复用性,可是慎用带通配符的泛型方法 通配符限制了一些泛型方法的使用,上下边界通配符使用不当可能引发没必要要的问题。
  • 5、程序员基本功--避免NPE
  1. 实用对象方法时,先判断对象非空、参数使用前先判空
  2. 任何NPE问题,或者入库检查,都由使用者来保证
  3. 参数重复校验问题:循环调用的方法不推荐参数校验,而是注释调用方外部参数校验,底层方法能够不校验,service层方法强校验

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

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

原子类:Atomic族 经常使用的线程池:ThreadPoolExecutor、Executorsgithub

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

运用第三方类库能够有效减小编写复杂度,同时避免没必要要的异常,推荐Google Guava数据库

相关文章
相关标签/搜索