最近正在阅读《编写高质量代码:改善Java程序的151个建议》,顺便做个笔记记录一下以及自己工作中遇到事例,不会按照原书顺序,平时自己比较常遇到先写。
一、开发通用准则
1、不要在常量或者变量中使用容易混淆的字母、更加不要用拼音和英文混用
包名小写、类名首字母大写、常量全部大写并用下划线隔开、变量驼峰命名、不能以下划线或者美元符号开头或者结尾,遵守这些基础的Java编码规范。
例:long变量11写成11l,代码中很容易误以为是111,这地方最好使用写成11L。
2、常量值不要变动
3、三元操作符的类型务必一致
三元操作符如果类型不一样,会进行自动类型转换。
4、子类覆写父类必须符合规矩
a、重写不能缩小访问权限;b、参数必须相同(类型、个数、形式必须相同);c、返回类型必须和被重写方法相同或是其子类;d、重写方法可以不抛出异常或者抛出更少的异常,但是不可以抛出新的异常,或者超出父类的异常。
5、break不可忘记写
switch...case使用中一定要记得加break,(我的习惯是写完case马上写break,之前出过没有写break的BUG,在代码量大还有循环的情况下,debug一步步走找问题也是非常耗时间,同事看了一眼说你没写break,一下才发现。我们编程过程中,特别出bug后加上疲劳,很容易头脑不清晰,很难以一个客观角度看自己代码。)
二、基本类型
1、用偶数做判断、不使用奇数
比如判断一个数不能被2整除,以偶数来判断更不会错误。例如:用奇数判断,-1对2取余会是偶数,大家可以试试。
2、用整数类型处理货币、需要处理浮点数使用BigDecimal
3、涉及类型转换最好用主动申明方式,不推荐让系统默认转换,容易出不必要BUG。
4、注意类型的边界
例:判断一个int值是否<1000,正常来说没问题的,但是如果你输入了2147484647(int类型最大值2147483647),超过了int范围1000值,数字越界会是检验失效。
单元测试中,我们需要去做边界测试,有三个值是必须测试的,0、负的最小值、正的最大值,如果这三个数据都没有问题,方法才是可靠的。
5、使用包装类型需要注意null值,装箱过程中,装入null值是没有问题的,但是拆箱过程中,涉及类型转换,null无法装换,会报空指针错误。
6、包装类型不能用<、>、== 比较大小,这些符号只能用于数字类型判断,包装类型判断的是引用,而不会是大小。
未完待续...
|