Java编程的标准之JAVA编程规范(8)

2018-12-17 15:12

开发可在几种硬件平台和/或操作系统上运行的软件的开发者需意识到不同平台的特性。那些可能要消耗相当数量时间的操作,如处理内存和缓冲区的方式,在不同的平台之间常常区别较大。常常会发现要根据平台来对代码进行不同的优化。

优化代码时要注意的另外一点是用户的优先权问题,因为依赖于上下文,人们会对一些特定的延迟敏感。例如,用户可能更喜欢那种立刻显示自身然后再等 8 秒钟再调出数据的屏幕,而不是那种在 5 秒钟内调出数据再显示的屏幕。换句话说,只要能有即刻的响应,大多数的用户乐意多等一点时间。在优化你的程序时,这是一个重要知识。

无需总是从用户的观点来优化代码。

虽然优化意味着你的应用程序成功与失败的区别,但不要忘了让代码正确运行更重要。切勿忘记,运行起来慢但却正确的软件永远比运行起来快但却不正确的软件要更受欢迎。

编写 Java 测试集

面向对象的测试是一个不会被对象开发团队忽视的重要课题。事实上,无论用何种语言书写代码,或者你或者某个人必须对你所写的软件进行测试。测试集指的是成员函数的集合,这些函数中的一部分嵌在类本身中(这叫做嵌入式测试),另一些在专门的用于检测应用程序的测试类中。

1.在所有的测试成员函数名前加上前缀 test。 这可以使你迅速地找到

代码中所有的测试函数。这种在测试函数名字前加前缀 test 方法的优点是,它让你在编译代码的产品版之前,能很容易地从代码中去掉测试函数。

2.一致地命名所有成员函数的测试函数。方法测试是证实单个成员函数

能如所定义的那样运行的操作。所有的成员函数应按照

testMemberFunctionNameForTestName 的格式命名。例如,用来测试 withdrawFunds() 的测试集的成员函数包含 testWithdrawFundsForInsufficientFunds() 和 testWithdrawFundsForSmallWithdrawal()。如果要对 withdrawFunds() 做一系列的测试,可以选择写一个叫 testWithdrawFunds() 的成员函数来调用所有函数。

3.一致地命名所有类的测试成员函数。类测试是证实单个类能象所定义

的那样的操作。所有的类应按照 testSelForTestName 的格式来命名。 例如,检测 Account 类的测试集成员函数包括

testSelfForSimultaneousAccess() 和 testSelfForReporting()。

4. 生成单点来调用类的检测函数。开发一个叫 testSelf() 的静态成员函

数来调用所有类测试和方法测试成员函数。

注释测试集成员函数。 注释测试集成员函数。注释应包含测试描

述和测试的期待结果。

成功的模式

作为一个软件开发者,在你的所有品中含有一份有关标准的文档并不会自动地使你更加地有效率。要成功,你必须选择变得更有效率,这意味着你必须将这些标准有效地应用起来。

有效地使用这些标准

以下的建议将帮助你更有效地使用本文所描述的 Java 编程标准和指南:

1.理解标准。花些时间去理解为什么每个标准和指南会使开发效率提高。

比如说,不要仅仅是因为指南中要求你才在一行仅声明一个局部变

量,而应该是因为你明白它能使你的代码更易懂你才这样做。 2.信任这些标准。理解每个标准是一个开始,但你还需要信任这些标准。

遵守标准不应仅仅是当你有时间才做的事,而你应该一直遵守,因为你相信这是最好的程序设计方法。 3.当你写代码时就应该遵守标准,而不应是一个事后的想法。加了注释

的代码不仅在你写程序时,而且在你写完程序时,都更容易理解。

在程序开发阶段和维护阶段,一致性地命名成员函数和字段都使工作更加容易。 在开发和维护阶段,整洁的代码让工作更加容易。概括起来说,遵守标准将提高你开发过程中的生产率,并且使你的代码更易维护(因此也使维护者的生产率提高了)。如果从一开始你就写出整洁的代码,你将在撰写过程中受益。

4.使它们成为你的质量保证的过程。代码检查的一部分应该是确保源码

遵守你的机构所采用的标准。将标准作为你训练和指导开发员更有效率的基础。

其它导向成功代码的因素

1.面向人而不是面向机器编程。你的开发努力的主要目的应该是你的代

码易被其它人理解。如果没人能理解它,它就一点儿优点也没有。

使用命名约定。注释代码。给代码分段。

2.首先设计,然后编写代码。你是否曾遇到过这样的情况:一些你的程

序所倚靠的代码需要修改?可能是要传一个新的参数给一个成员函数,或者是需要将一个类拆成几个类。为了确信你的代码与被重新设置修改的代码还能一起工作,你必须做多大的额外工作呢?你有

多么乐意?你是否曾经问过自己,为什么有些人在开始写代码时不先停下来考虑一下,以避免这一切的发生?他们为什么不首先设计程序呢?当然你做了。如果你在实际开始动手写代码之前花时间想清楚你打算怎样写你的代码,你很可能可以少花些时间编写它。此外,仅通过开始时就将它们想好,你将潜在地减少将来修改代码所带来的影响。

3.一小步一小步地开发。一小步一小步地开发,先写几个成员函数,检

测它们,再多写几个,这样开发比一次性地写完所有代码然后修改它要有效得多。检测和修改十行代码远比检修一百行代码要容易得多。实际上可以很有把握地说,同样是编写、测试和修改 100 行代码,十行十行地做所花的时间少于一口气做 100 行所花的时间的一半。理由很简单。当测试你的代码并发现问题时,问题几乎总是在刚写完的新代码中,当然这假定在剩下的那些旧代码上开始写是很可靠的。在一小部分代码中寻找问题会比在一大段代码中找问题要快得多。通过一小步一小步逐步地开发,减少了查找错误所需的平均时间,这转而又减少了整个的开发时间。

4.让代码简洁。复杂的代码或许让人在智力上获得满足,但是如果别人

读不懂, 那就不好了。如果要求某人,甚至是你,第一次修改一段复杂的代码以纠正其中的错误或对它进行增强,那么很可能代码会被重写。实际上,你很可能已经因为代码难懂而重写过别人的代码。

当你在重写代码时,你是怎样认为代码的最初开发者的呢?你认为那个人是天才还是怪物? 写出那种后来要被重写的代码没什么可骄傲的,所以应该遵循 KISS 法则:要使代码简单直白。

5.学习常用的模式、反模式和代码模式。 有大量的分析、设计和处理的

模式和反模式以及编程代码模式供你提高开发效率。详情请参见

[AMB98] and [AMB99]。

你的开发工作的主要目的应该是你的代码易被其它人理解。如果没人能理解它,它就一点优点也没有。使用命名约定。注释代码。给它分段。

? 首先设计,然后编写代码。你是否曾遇到过这样的情况:一些你的程

序倚靠的代码需要修改?可能是要传一个新的参数给一个成员函数,或者是需要将一个类拆成几个类。为了确信你的代码与被重新设置修改的代码还能一起工作,你必须做多大的额外工作呢?你有多么乐意?你是否曾经问过自己,为什么有些人在开始写代码时不先停下来考虑一下,以避免这一切的发生?他们为什么不首先设计程序呢?当然你做了。如果你在实际开始动手写代码之前花时间想清楚你打算怎样写你的代码,你很可能可以少花些时间编写它。此外,仅通过在一开始就想好,你将潜在地减少将来修改代码所带来的影响。

? 一小步一小步地开发。一小步一小步地开发,先写几个成员函数,检

测它们,再多写几个,这样开发比一次性地写完所有代码然后修改它要有效得多。检测和修改十行代码远比检修一百行代码要容易得多。实际上,可以很有把握地说,同样是编写、测试和修改 100 行代码,十行十行地做所花的时间少于一口气做 100 行所花的时间的一半。理由很简单。当测试你的代码并发现问题时,问题几乎总是在刚写完的新代码中,当然这假定在剩下的那些旧代码上开始写是很可靠的。在一小部分代码中寻找问题会比在一大段代码中找问题要快得多。通过一小步一小步逐步地开发,减少了查找错误所需的平均时间,这转而又减少了整个的开发时间。

? 让代码简洁。复杂的代码或许让人在智力上获得满足,但是如果别人

读不懂,那就不是这样。如果要求某人,甚至是你,第一次修改一段复杂的代码以纠正其中的错误或对它进行增强,那么很可能代码会被重写。实际上,你很可能已经因为代码难懂而重写过某人的代码。当你在重写代码时,你是怎样认为代码的最初开发者的呢?你认为那个人是天才还是怪物?写出那种后来要被重写的代码没什么可骄傲的,所以应遵循 KISS 法则:要使代码简单直白。

? 学习常用的模式、反模式和代码模式。有大量的分析、设计和处理的

模式和反模式,以及编程代码模式,以供你提高开发效率。详情请

参见 [AMB98] and [AMB99]。

概括

为方便起见,本章总结到目前为止已给出的指南。

本章按照标题组织成几个一页大小的 Java 编程标准总结。这些标题是:

? Java 命名约定 ? Java 注释约定 ? Java 程序设计约定

在我们开始概括这个白皮书余下的标准和指南之前,我想重申主要的要求:

当你违背一个标准时,将其注释出来。除了这个标准之外的所有标准都可以违背。如果违背了,你必须说明为什么你要违背这个标准,违背这个标准可能产生的影响,以及标准被应用于这个场合之前可能/必须出现的任何条件。

Java 命名约定

除了以下几个特例之外,命名时应始终采用完整的英文描述符。此外,一般应采用小写字母,但类名、接口名以及任何非初始单词的第一个字母要大写。

一般概念:

? 使用完整的英文描述符 ? 采用适用于该领域的术语 ? 采用大小写混合使名字可读

? 尽量少用缩写,但如果用了,要明智地使用。 ? 避免使用长的名字(小于 15 个字母是个好主意) ? 避免使用类似的名字,或者仅仅是大小写不同的名字 ? 避免使用下划线

操作项 实参/ 命名约定 使用传递值/对象的完整的英文描述符,可能要在名字之前加上 a 或 an 前缀。重要的是选择一种并坚持用它。 示例 customer, account, - 或者 - aCustomer, anAccount 参数 字段/ 字段采用完整的英文描述,第一个字母小写,任何中间单词的首字母大写。 属性 布尔型的获取成员函数 所有的布尔型获取函数必须用单词 is 做前缀。如果你遵守前文所说的布尔字段的命名标准,那么你只需将字段名赋给它即可。/font> firstName, lastName, warpSpeed isPersistent(), isString(), isCharacter() 类 采用完整的英文描述符,所有单词的第一个字母大写。 Customer, SavingsAccount 编译单元文件 使用类或接口的名字,或者如果文件中除了主类之外还有多个类时,加上前缀 java 来说明它是一个源码文件。 使用完整的英文描述来说明组件的用途,末端应接上组件类型。 Customer.java, SavingsAccount.java, Singleton.java 组件/ 部件 okButton, customerList, fileMenu


Java编程的标准之JAVA编程规范(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:用友通实务练习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: