JAVA代码规范

POJO 类中布尔类型的变量,都不要加 is,否则部分框架解析会引起序列化错误。

如果变量值仅在一个范围内变化,且带有名称之外的延伸属性,定义为枚举类

所有的 POJO 类属性必须使用包装数据类型。
RPC 方法的返回值和参数必须使用包装数据类型。
POJO 类属性没有初值是提醒使用者在需要使用时,必须自己显式地进行赋值,任何NPE 问题,或者入库检查,都由使用者来保证。
所有的局部变量使用基本数据类型。

定义 DO/DTO/VO 等 POJO 类时,不要设定任何属性默认值。

序列化类新增属性时,请不要修改 serialVersionUID 字段,避免反序列失败;如
果完全不兼容升级,避免反序列化混乱,那么请修改 serialVersionUID 值。
新增属性不影响老版本的反序列化!

构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,请放在 init 方法中。

使用集合转数组的方法,必须使用集合的 toArray(T[] array),传入的是类型完全
一样的数组,大小就是 list.size()。

创建线程或线程池时请指定有意义的线程名称,方便出错时回溯。
线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。

使用 CountDownLatch 进行异步转同步操作,每个线程退出前必须调用 countDown方法,线程执行代码注意 catch 异常,确保 countDown 方法被执行到,避免主线程无法执行
至 await 方法,直到超时才返回结果。

ThreadLocal 无法解决共享对象的更新问题,ThreadLocal 对象建议使用 static修饰。这个变量是针对一个线程内所有操作共享的,所以设置为静态变量,所有此类实例共享
此静态变量 ,也就是说在类第一次被使用时装载,只分配一块存储空间,所有此类的对象(只要是这个线程内定义的)都可以操控这个变量。

超过 3 层的 if-else 的逻辑判断代码可以使用卫语句、策略模式、状态模式等来实现

下列情形,需要进行参数校验:
1) 调用频次低的方法。
2) 执行时间开销很大的方法。此情形中,参数校验时间几乎可以忽略不计,但如果因为参数错误导致中间执行回退,或者错误,那得不偿失。
3) 需要极高稳定性和可用性的方法。
4) 对外提供的开放接口,不管是 RPC/API/HTTP 接口。
5) 敏感权限入口。

防止 NPE 是调用者的责任。即使被调用方法返回空集合或者空对象,对调用
者来说,也并非高枕无忧,必须考虑到远程调用失败、序列化失败、运行时异常等场景返回null 的情况。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 2017年,阿里官方推出一套Java编程规范:《阿里巴巴Java开发手册(终极版)》,这套Java统一规范标准将有...
    caison阅读 44,102评论 0 30
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,923评论 18 139
  • 总是触摸着时光的身体 却买不起那属于她的嫁衣 褪去那一点激情 却抵不过生活带给你的外遇 举杯之间迷住了双眼 每时每...
    戒子阅读 254评论 0 2
  • 去ICU病房实习的第一天上的是夜班。刚到那,带教老师便让我去5床那待着。我走进房间,好奇的环顾四周,重症监护室果然...
    一口吃成了瘦子阅读 468评论 2 3
  • 分享一尾暗恋插曲 ——by 一个傻瓜朋友 我其实从小到大就谈过一次失败的恋...
    一尾猫阅读 285评论 0 0