代码大全笔记(二)

 第三部分  第12章 基本数据类型

1数值概论:
 1)避免使用“神秘数值(magic number)”(其实就是具体数值),如100或者47523,而应该使用具名常量。
 2)预防除零错误
 3)不要依赖隐式转换,将其变得明显,能使你的代码变得更加容易维护(就如其他隐式的东西一样)
 4)避免混合类型的比较

2整数
 1)检查整数乘法的溢出
 2)检查整数除法
 3)检查中间结果溢出
  java实例:
  final long MICROS_PER_DAY = 24 * 60 * 60 * 1000 * 1000;
 这个例子得出的情况将为大出许多人的意外。具体情况参看《Java解惑》谜题三:长整除

3浮点数
 1)避免数量级相差巨大的数之间的加减运算
 2)避免等量判断:很多应该相等浮点数值并一定相等。
 3)处理舍入误差问题
  一些解决舍入问题的方案:
  3.1)换用一种精确度更高的变量类型。如果你正在用单精度浮点值,那么就换用双精度浮点值
  3.2)换用二进制编码的十进制变量。BCD模式的处理通常更慢一些,并且要占用更多的存储空间,但是它能防止很多舍入错误的发生(java中BigDecimal怎么写出来的?)
  3.3)把浮点型转为整形变量。这是一种自力更生转到BCD变量的方法。你可能必须要用64位整数才能获得所需的精度。

4字符和字符串
 1)避免使用神秘字符和神秘字符串
 2)避免off-by-one错误
 3)了解你的语言和编程环境是如何支持Unicode的(Java的char类型为Unicode编码)
 4)如果你需要支持多种语言,请使用Unicode

5布尔类型
 1)使用布尔变量对程序加以文档说明,同时也可以简化复杂的判断,使程序结构和意图一目了然
 java示例:目标不明确的布尔类型
 if ( ( elementIndex < 0 ) || ( MAX_ELEMENTS < elementIndex ) ||
     ( elementIndex == lastElementIndex )
     ) {
  //do something
     }

  Java示例:目标明确的布尔类型
  boolean finished = ( elementIndex < 0 ) || ( MAX_ELEMENTS < elementIndex );
  boolean repeatedEntry = ( elementIndex == lastElementIndex );
  if ( finished || repeatedEntry ) {
  //do something
  }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值