快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

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

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

学习一种新的编程语言比学习新的口头语言要容易得多。然而,在这两种学 习过程中,都要付出额外的努力去学习不带口音地说新语言。如果您熟悉 C 或 C++,那么学习 Java 语言并不困难,这就像是会说瑞典语的人去学丹麦语一样 。语言虽有不同,但又彼此互通。但若不够谨慎,您的口音每次都会暴露出您并 非原生语言使用者这个秘密。

C++ 程序员往往会对 Java 代码做出一些变形,而这样的举动将他们与原生 Java 语言用户清晰地区分开来。他们的代码可以无错运行,但对于原生语言用 户来说,就是有一些地方不对劲。因而原生语言用户可能会轻视非原生用户。从 C 或 C++(或者 Basic、Fortran、Scheme 等)转到 Java 语言时,您需要根除 一些习惯用语,并纠正某些发音,以便流畅地使用新语言。

在本文中,我探讨了一些往往被忽视的 Java 编程细节,因为从语义上来说 ,它们并不重要,甚至是无关紧要的。它们纯粹是风格和惯例问题。其中有些细 节有着似是而非的理由,其他一些甚至连似是而非的理由也没有。但所有这些细 节都是当今编写的 Java 代码中真实存在的现象。

这是什么语言?

让我们首先来看一段代码,其作用是将华氏温度转换为摄氏度,如清单 1 所 示:

清单 1. 一段 C 代码?

float F, C; float min_tmp, max_tmp, x; min_tmp = 0; max_tmp = 300; x = 20; F = min_tmp; while (F <= max_tmp) {    C = 5 * (F-32) / 9;    printf("%f\t%f\n", F, C);    F = F + x; }

清单 1 中使用的是什么语言?很显然是 C 语言 —请等一下,让我们来看看 完整的程序,如清单 2 所示:

清单 2. Java 程序

class Test {    public static void main(String argv[]) {      float F, C;      float min_tmp, max_tmp, x;      min_tmp = 0;      max_tmp = 300;      x = 20;      F = min_tmp;      while (F <= max_tmp) {       C = 5 * (F-32) / 9;       printf("%f\t%f\n", F, C);       F = F + x;      }    }    private static void printf(String format, Object...  args) {      System.out.printf(format, args);    } }

无论您是否相信,清单 1 和清单 2 都是使用 Java 语言编写的。它们只是 以 C 语言方言(老实说,清单 1 也确实可以是 C 代码)编写的 Java 代码。 这里的几个习语标志着:编写这段代码的人是以 C 语言思考的,只是单纯地将 其翻译为 Java 语言:

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

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

变量是 float 而非 double。

所有变量都是在方法上方声明的。

初始化紧接声明之后。

使用了 while 循环而非 for 循环。

使用了 printf 而非 println。

main() 方法的参数名为 argv。

数组括号紧接参数名之后,而非类型之后。

如果仅仅考虑所编写的这些代码是否能够编译或者是否会得到正确的结果, 那么这些方言都不是错误的。如果分开来看,这几点都并不明显。但将它们结合 在一起,就构成了一段非常古怪的代码,Java 程序员难以读懂,就像美国人难 以听懂北英格兰人的方言一样。您使用的此类 C 语言方言越少,您的代码就会 越清晰。请牢记这一点,下面我们将继续分析 C 语言程序员暴露自己身份的一 些常见方式,并说明如何才能使他们的代码更符合 Java 程序员的眼光。

命名规范

根据您原本使用的是 C、C++ 还是 C#,您可能有一些较为主

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号