T31训练营笔记(7)Java代码避坑指南

1. 浮点数据的处理
1.1 任何货币金额均以最小货币单位且整型类型来进行存储
1.2 浮点类型存在精度丢失
1.3 浮点数据避坑
(1)浮点数据之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能用equals来判断,可以指定一个误差范围
(2)BigDecimal的等值比较应使用compareTo()方法,而不是equals()方法
(3)禁止使用构造方法BigDecimal(double)的方式把double值转化为BigDecimal对象

2. 日期数据的处理
2.1 Java8新增日期API
LocalData、LocalTime、LocalDateTime、Instant
2.2 传统日期API的问题
(1)所有的日期类都是线程不安全的
(2)日期、时间、时间戳没有明确对应的类
(3)对于格式化和解析的需求,通常情况下使用SimpleDateFormat类
2.3 JDK8新增API的优势
(1)线程安全
(2)时间日期都有对应的类
(3)在所有类中,方法都被明确定义用以完成相同的行为
(4)所有新的日期/时间API类都实现了一系列方法用以完成通用的任务

3. 控制语句的避坑规范
3.1 switch语句
(1)每个case要么通过continue/break/return等来终止,要么注释说明程序将执行到哪一个case为止
(2)在switch块内,必须包含一个default语句并且放在最后
(3)当switch括号内变量类型为String并且为外部参数时,必须先进行null判断
3.2 控制语句规约
(1)在 if/else/for/while/do 语句中必须使用大括号
(2)表达异常分支时,少用 if-else 方式
(3)三目运算符注意类型对齐,可能抛出因自动拆箱导致的NPE异常
3.3 好习惯
(1)不要再其它表达式中插入赋值语句
(2)不在条件判断中执行其它复杂语句
(3)避免采用取反逻辑运算符,除非必须采用
3.4 高并发场景中,避免使用“等于”判断作为中断或退出的条件
3.5 需要参数校验的场合
调用频次低、执行开销大、需要极高稳定性和可用性、对外提供的开放接口、敏感权限入口、公开接口
3.6 不需要参数校验的场合
极有可能被循环调用的方法、底层调用频度比较高的方法、被声明称private的方法

4. OOP设计
4.1 主要目标
可维护性、可重用性、可扩展性
4.2 四大特征
抽象、封装、继承、多态
4.3 七大设计原则
单一职责、里氏替换、接口隔离、组合复用、依赖倒置、迪米特、开闭

5. OOP规约
5.1 所有的覆写方法必须加@Override注解
5.2 可变参数
(1)相同参数类型、相同业务含义
(2)避免使用Object
(3)可变参数必须放置在参数列表的最后
(4)尽量不用可变参数
5.3 对象的比较
(1)所有整型包装类对象之间值的比较,全部使用equals方法比较
(2)应使用常量或确定有值的对象来调用equals
5.4 方法及属性
(1)所有的POJO类属性必须使用包装数据类型
(2)定义POJO类时不要设定任何属性默认值
(3)定义数据对象DO类时,属性类型要与数据库字段类型相匹配
(4)getter/setter方法中,不要增加业务逻辑
(5)禁止在POJO类中同时存在对应属性xxx的isXxx()和getXxx()方法
(6)构造方法中禁止加入任何业务逻辑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值