编码避坑指南(孤尽4班)

wuchangjian2021-11-11 17:41:57编程学习

浮点数据的处理

浮点数据避坑

  • 浮点数之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能用equals 来判断

  • BigDecimal的等值比较应使用compareTo()方法,而不是equals()方法

  • equals():方法会比较值和精度(1.0与1.00返回结果为false)

  • compareTo():会忽略精度。

  • 禁止使用构造方法 BigDecimal(double)的方式把 double值转化为BigDecimal对象

日期数据的处理

日期格式化需要注意的问题

日期格式化时,传入pattern中表示年份统一使用小写的y
小写yyyy:表示当天所在的年
大写YYY:代表是week in which year (JDK7之后引入的概念)
意思是当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,返回的YYYY就是下一年。

在日期格式中分清楚大写的M和小写的m,大写的H和小写的h分别指代的意义

  1. 表示月份是大写的M;
  2. 表示分钟则是小写的m;
  3. 24小时制的是大写的H;
  4. 12小时制的则是小写的h。

获取当前毫秒数:

  1. System.currentTimeMillis();而不是new Date().getTime()
  2. 如果想获取更加精确的纳秒级时间值,使用System.nanoTime的方式
  3. 在JDK8中,针对统计时间等场景,推荐使用Instant类

控制语句的避坑规范

  • 每个case要么通过continue/break/return等来终止。
  • 要么注释说明程序将继续执行到哪一个case为止
  • 在一个switch块内,都必须包含一个default语句并且放在最后

控制语句好习惯

不要在其它表达式(尤其是条件表达式)中,插入赋值语句

不要在条件判断中执行其它复杂的语句,以提高可读性

避免采用取反逻辑运算符

必须取反逻辑运算

在高并发场景中控制语句规约

在高并发场景中,避免使用”等于”判断作为中断或退出的条件

如果并发控制没有处理好,容易产生等值判断被“击穿”的情况,使用大于或小于的区间判断条件来代替

需要参数校验的场合

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

相关文章

《数据清洗》8.3.3 加载时间数据至时间维度表

需求:数据库中生成86400条数据 每条数据对应一天的1秒 起始&#x...

CSS3新增属性

1.1 背景 a. background-size 设置背景图片大小 案例ÿ...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。