快速业务通道

四个有害的Java编码习惯 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
考虑现有的持久化方案和框架,你会将

这个对象设计成什么样子?跟javabean相似呢还是完全不一样?

我认为会完全不一样,说明如下:

它不包含一个无参数构造方法(这一特征是javabean必备的。)。作者认为一个数据库记录的对象如果不包含任何数据是没有意义的。一个数据库表的所有字段都是可选的情况有多少?

It would likely not have anything to say about events and listeners.(不太明白作者的意思)

它不强迫你用可变的对象。

它内部有一个数据验证机制。这样一个验证机制对大多数数据库应用非常重要。(记住对象的第一原则:一个对象应该同时封装数据和对数据的操作。在这种情况下,操作就是验证数据。)

数据验证机制可以给最终用户(end user)报错。

按照javabeans的说明,javabeans是用来解决特殊领域的问题:在图形界面程序的设计中充当小部件。说明中绝对没有提到数据库。但现在通常用javabean来做数据库记录的映射。从实际角度来讲,许多被广泛使用的框架要求应用程序使用JavaBeans(或者其它类似的规范)来映射数据库记录。这种滥用不利于编程者了解和使用不可变对象。

四个有害的Java编码习惯(4)

时间:2011-01-27 yeeyan 译:Tanya

4.私有成员排在其它成员的前面

类成员的排序没有按照成员的作用域的大小排列,而是把private放在前面。

以前的好莱坞影片开头总是长篇的荣誉。同样地,大多数Java类把私有成员放在最前面。示例3给出这种风格的典型例子:

public class OilWell implements EnergySource {   private Long id;   private String name;   private String location;   private Date discoveryDate;   private Long totalReserves;   private Long productionToDate;   public Long getId() {     return id;   }   public void setId(Long id) {     this.id = id;   }   //..elided }

然而,如果把私有成员定义放在后面,读者阅读会更容易。因为人们认识一个事物的通常过程都是从一般到特殊,从抽象层次来说,是从高层次到低层次的认识过程。如果你倒过来的话,读者就不能从整体上把握事物,也不能抓住事物的本质,只能在一堆具体的片段中迷失。

整体的抽象让你忽略了细节。抽象的层次越高,你可以忽略越多的细节。读者阅读一个类时可以忽略的细节越多他会越高兴。脑袋里填充太多的细节是痛苦的,所以细节越少越好。因此,将私有成员放在最后会显得更富有同情心,因为这样阻止了不必要的细节显露给读者。

本来C++程序的习惯也是像Java一样把private成员放在最开始。然而,C++社区迅速的认识到这是一个有害的规范,这个规范现在已经被修正。这里给出一个经典的C++风格指南里的注释:

注意:public 接口应该放在class的最开始,其次是protected成员,最后是private成员。原因是:

程序员应该更关心接口而不是具体实现。

当程序员需要用一个类的时候,他们需要的是接口而不是实现。

把接口放在开始是非常有意义的。把实现部分,私有部分,放在开始是一个历史遗留问题。最后还是要反复强调一下,一个类的接口的重要性超过实现细节。

同样,伦敦大学帝国学院关于C++的指面中也说到:把公有的部分放在前面,读者会更感兴趣阅读,然后是保护的部分,最后是私有的部分。

有人会持反对意见,认为读者可以使用程序文档来理解类,而不是直接看源代码。这种理由似乎不成立,因为程序文档中没有相关的实现细节,这时看源代码是很有必要的。

所有的技术文档,通常都把难理解的信息放在开头,比如抽象的学术论文。为什么Java不打破这种常规呢?把私有成员放在最开头部分看起来是不是打破常规的好习惯。这种习惯似乎是sun早期的编码规范造成的。

将代码按照javadoc的顺序编排是非常好的:首

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