快速业务通道

使用原汁原味的Java语言 - 非Java原生程序员的语言流畅性 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
, z; float cf[], gh[], jk[];

然而,这种风格也有一些缺陷。它将变量的声明与其使用分离开来,使代码 的易读性降低。此外,它会为多种不同的用途重用一个本地变量,有可能并非刻 意而为。但若变量持有代码的某个片段无法接受的残值,这可能会带来无法预料 的 bug。这一点与 C 语言中简短而难解的变量名结合在一起,将会后患无穷。

使用原汁原味的Java语言 - 非Java原生程序员的语言流畅性(4)

时间:2011-06-10 IBM Elliotte Rusty Harol

在 Java 语言(和较新版本的 C 语言)中,变量可在初次使用或接近初次使 用时声明。在编写 Java 代码时,请采取这种做法。这将使您的代码更加安全、 更不易出现 bug,也更易于阅读。

此外,Java 代码通常在声明变量时初始化各变量,而 C 程序员有时会写出 下面这样的代码:

int i; i = 7;

尽管这在语法上是正确的,但 Java 程序员永远不会写出这样的代码。他们 会这样写这段代码:

int i = 7;

这有助于避免因意外使用了未经初始化的变量而导致的 bug。惟一的常见例 外是一个变量的作用域需要同时包含 try 块和 catch 或 finally 块。这往往 是由于代码涉及需要在 finally 块中关闭的输入流和输出流而导致的,如清单 5 所示:

清单 5. 异常处理可能会使变量的作用域难以合理设定

InputStream in; try {   in = new FileInputStream("data.txt");   // read from InputStream  }   finally {   if (in != null) {    in.close();   } }

但这几乎是惟一的异常。

这种风格的最后一种连锁反应就是 Java 程序员通常每行仅声明一个变量。 例如,他们初始化变量的方法如下:

int i = 3; int j = 8; int k = 9;

通常不会写出下面这样的代码:

int i=3, j=8, k=9;

这条语句在语法上是正确的,但除非在一种特殊的例外情况下,专业 Java 程序员是不会这样做的,后文将介绍这种特殊情况。

老式的 C 程序员甚至可能编写一个四行的代码:

int i, j, k;   i = 3;   j = 8;   k = 9;

Java 风格将声明与初始化结合在一起,因而实际上要更简练一些,只需要三 行代码。

使用原汁原味的Java语言 - 非Java原生程序员的语言流畅性(5)

时间:2011-06-10 IBM Elliotte Rusty Harol

将变量置入循环

常见的一种特殊情况就是在循环外部声明变量。例如,考虑清单 6 中简单的 for 循环,其作用是计算斐波那契数列的前 20 项:

清单 6. C 程序员喜欢在循环外部声明变量

int high = 1; int low = 1; int tmp; int i; for (i = 1; i < 20; i++) {    System.out.println(high);    tmp = high;    high = high+ low;    low = tmp; }

所有这四个变量都是在循环外声明的,尽管它们仅在循环内部使用,但作用 域不止于此。这容易导致 bug,变量可能会在其目标作用域之外被重用。对于使 用常用名的变量来说更是这样,例如 i 和 tmp。某次使用的值可能会残留下来 ,并以无法预计的方式干扰后续的代码。

第一项改进(C 语言的现代版本也支持这项改进)是将 i 循环变量的声明移 到循环之内,如清单 7 所示:

清单 7. 将循环变量移入循环

int high = 1; int low = 1; int tmp; for (int i = 1; i < 20; i++) {    System.out.println(high);    tmp = high;    high = high+ low;    low = tmp; }

到这里还没有结束,经验丰富的 Java 程序员还会将 tmp 变量移入循环,如 清单 8 所示:

清单 8. 在循环内声明临时变量

int high = 1; int low = 1; for (int i = 1; i < 20; i++) {    System.out.println(high);    int tmp = high;   

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号