编写高质量代码:改善Java程序的151个建议(1)

发表于:2012-2-17 09:24

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:秦小波    来源:51Testing软件测试网采编

  第1章 Java开发中通用的方法和准则

  Thereasonablemanadaptshimselftotheworld;theunreasonableonepersistsintryingtoadapttheworldtohimself.

  明白事理的人使自己适应世界;不明事理的人想让世界适应自己。

  —萧伯纳

  Java的世界丰富又多彩,但同时也布满了荆棘陷阱,大家一不小心就可能跌入黑暗深渊,只有在了解了其通行规则后才能使自己在技术的海洋里遨游飞翔,恣意驰骋。

  “千里之行始于足下”,本章主要讲述与Java语言基础有关的问题及建议的解决方案,例如常量和变量的注意事项、如何更安全地序列化、断言到底该如何使用等。

  建议1:不要在常量和变量中出现易混淆的字母

  包名全小写,类名首字母全大写,常量全部大写并用下划线分隔,变量采用驼峰命名法(CamelCase)命名等,这些都是最基本的Java编码规范,是每个Javaer都应熟知的规则,但是在变量的声明中要注意不要引入容易混淆的字母。尝试阅读如下代码,思考一下打印出的i等于多少:

  1. public class Client {  
  2.      public static void main(String[] args) {  
  3.            long i = 1l;  
  4.            System.out.println("i的两倍是:" + (i+i));  
  5.      }  
  6. }

  肯定有人会说:这么简单的例子还能出错?运行结果肯定是22!实践是检验真理的唯一标准,将其拷贝到Eclipse中,然后Run一下看看,或许你会很奇怪,结果是2,而不是22,难道是Eclipse的显示有问题,少了个“2”?

  因为赋给变量i的数字就是“1”,只是后面加了长整型变量的标示字母“l”而已。别说是我挖坑让你跳,如果有类似程序出现在项目中,当你试图通过阅读代码来理解作者的思想时,此情此景就有可能会出现。所以,为了让您的程序更容易理解,字母“l”(还包括大写字母“O”)尽量不要和数字混用,以免使阅读者的理解与程序意图产生偏差。如果字母和数字必须混合使用,字母“l”务必大写,字母“O”则增加注释。

  注意 字母“l”作为长整型标志时务必大写。

  建议2:莫让常量蜕变成变量

  常量蜕变成变量?你胡扯吧,加了final和static的常量怎么可能会变呢?不可能二次赋值的呀。真的不可能吗?看我们神奇的魔术,代码如下:

  1. public class Client {     
  2.      public static void main(String[] args) {  
  3.            System.out.println("常量会变哦:" + Const.RAND_CONST);  
  4.      }  
  5. }  
  6. /*接口常量*/  
  7. interface Const{  
  8.     //这还是常量吗?  
  9.     public static final int RAND_CONST = new Random().nextInt();  
  10. }

  RAND_CONST是常量吗?它的值会变吗?绝对会变!这种常量的定义方式是极不可取的,常量就是常量,在编译期就必须确定其值,不应该在运行期更改,否则程序的可读性会非常差,甚至连作者自己都不能确定在运行期发生了何种神奇的事情。

  甭想着使用常量会变的这个功能来实现序列号算法、随机种子生成,除非这真的是项目中的唯一方案,否则就放弃吧,常量还是当常量使用。

  注意:务必让常量的值在运行期保持不变。

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号