Java开发人员需要重视的十大戒律

欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入

6. 不要打印行和字符串相加

我知道,为了调试的目的,开发人员喜欢在每一个我们认为适合的地方添加System.out.println,而且我们会对我们自己说,会在以后删掉这些代码的。但是我们常常忘掉删去这些代码行,或者我们根本就不想删掉它们。我们使用System.out.println来测试,当我们测试完成以后,为什么我们还能接触到它们呢?我们可能删掉一行我们实际需要的代码,仅仅是因为你低估了System.out.println所带来的伤害,考虑下面的代码:

public class BadCode { public static void calculationWithPrint(){double someValue = 0D;for (int i = 0; i < 10000; i++) {System.out.println(someValue = someValue + i);}}public static void calculationWithOutPrint(){double someValue = 0D;for (int i = 0; i < 10000; i++) {   someValue = someValue + i;}}public static void main(String [] n) {BadCode.calculationWithPrint();BadCode.calculationWithOutPrint();}}

在下面的表格中,你能够看到calculationWithOutPrint()方法的运行花了0.001204秒。相比较而言,运行calculationWithPrint()方法花了令人惊讶的10.52秒。

(如果你不知道怎么得到一个像这样的表格,请参阅我的文章“Java Profiling with WSAD” Java Profiling with WSAD)

避免这样一个CPU浪费的最好方法是引入一个包装器方法,就象下面这样

public class BadCode { public static final int DEBUG_MODE = 1;   public static final int PRODUCTION_MODE = 2;public static void calculationWithPrint(int logMode){double someValue = 0D;for (int i = 0; i < 10000; i++) {someValue = someValue + i;   myPrintMethod(logMode, someValue);}}   public static void myPrintMethod(int logMode, double value) {if (logMode > BadCode.DEBUG_MODE) { return; }System.out.println(value);}public static void main(String [] n) {   BadCode.calculationWithPrint(BadCode.PRODUCTION_MODE);}}

在下面的图中,你将看到,使用了StringBuffer的那个方法只花了0.01秒来执行,而那个使用了字符串相加的方法却花了0.08秒来运行。选择是显而易见的。

7. 关注GUI

不管这听起来有多么可笑,我都要再三地说明:GUI对于商业客户来说和功能和性能一样重要。GUI是一个成功的系统的必要的一部分。(但是),IT杂志常常倾向于忽视GUI 的重要性。很多机构为了省钱而不雇用那些在设计“用户友好”GUI方面有丰富经验的设计人员。Java开发人员不得不依赖他们自己的HTML知识,但是他们在这方面的知识十分有限。我看到过很多这样的应用:它们是“计算机友好”,而不是“用户友好”我很少很少能看到有开发人员既精通软件开发,又精通GUI 开发。如果你是那个不幸的开发人员,被分配去开发用户接口,你应该遵从以下的三条原则:

一、不要重复发明轮子。寻找有相似用户接口需求的已经存在的系统。

二、首先创建一个原型。这是非常重要的步骤。客户喜欢看看他们将要得到什么。这对你来说也是很好的,因为在你全力以赴而做出一个将要使用户生气的用户接口之前,你就得到了它们的反馈。

三、戴用户的帽子。换一句话说,站在用户的视角检查应用的需求。例如,一个总结页面到底要不要分页。作为一个软件开发者,你倾向于在一个系统中忽视分页,因为这样使得你有比较少的开发复杂性。但是,这对于从一个用户的视角来说却不是最好的解决方案,因为小结的数据将会有成百上千个数据行。

8. 永远准备文档化的需求

每一个业务需求都必须文档化。这可能在一些童话故事里才能成真,但是在现实世界却不可能。不管时间对于你的开发来说是多么紧迫,也不管交付日期马上就要到来,你永远都必须清楚,每一个业务需求是文档化的。

9. 单元测试、单元测试、单元测试

我将不会深入地讨论哪些什么是把你的代码进行单元测试的最佳方法的细节问题。我将要说的是单元测试必须要做。这是编程的最基本的法则。这是上面所有法则中最不能被忽略的一个。如果你的同事能为你的代码创建和测试单元测试,这是最好不过的事。但是如果没有人为你做这些事,那么你就必须自己做。在创建你的单元测试计划的时候,遵从下面的这些规则:

一、在写代码之前就写单元测试用例。

二、在单元测试里写注释。

三、测试一切执行“interesting”功能的公有方法(“interesting”的意思是非setters或getters方法,除非它们通过一种特殊的方式执行set和get方法)。

10. 记住?质量,而不是数量。

不要在办公室里呆得太晚(当你不必呆的太晚的时候)。我理解有时,产品的问题、紧迫的最终期限、意想不到的事件都会阻止我们按时下班。但是,在正常情况下,经理是不会赏识和奖赏那些下班太晚的员工的,他赏识他们是因为他们所做产品的质量。如果你遵从了我上面给出的那些规则,你将会发现你的代码更加少的bug,更加多的可维护性。而这才是你的工作的最重要的部分。

总结

在这篇文章里,我给出了针对Java开发人员的十个重要的规则。重要的不仅仅是知道这些规则,在编码的过程中遵从这些规则更为重要。希望这些规则能够帮助我们成为更好的编程人员和专业人员。

[1][2]

黑夜下,撕开那张面具尽是怠倦的容颜,

Java开发人员需要重视的十大戒律

相关文章:

你感兴趣的文章:

标签云: