快速业务通道

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

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

com.blah.util

也就是说,把具有同样特征或者功能的类划分到了不同的包里。因为成员的属性对其他成员应该是可见的,这就意味着几乎应用程序中所有的类都是公共的。实际上,这种按层次划分包的方法完全扔掉了Java的包内私有。包内私有应该彻底不使用。现在,包内私有是Java程序语言中设计者的默认作用域。这种包的划分习惯也违反了面向对象编程的核心原则之--尽量保持私有以减少影响,因为这种习惯强迫你必须扩大类的作用域。由于一些奇怪的原因,一些Java组织不赞成这种命名,似乎不公正的。

另一种风格是按特征划分命名:

com.blah.painting

com.blah.buyer

com.blah.seller

com.blah.auction

com.blah.webmaster

com.blah.useraccess

com.blah.util

这里,成员不按行为划分,而是按照不同特征的类划分,每个成员都关联不同的特征。这种方法下包在最初使用是被定义。

例如:在Web应用程序中,“com.blah.painting”包可能由下列成员组成:

Painting.java: 一个model对象

PaintingDAO.java: 一个数据存取对象Dao

PaintingAction.java: 一个控制或者行为对象

statements.sql: Dao对象使用的SQl文件

view.jsp: Jsp文件

需要特别说是的是,这种划分方法,每一个包都包含所有成员有关的特征文件,而不仅仅是Java源文件。这种按特征划分包的方法,要求在做删除操作时要注意,删除一个特征时要删掉它的整个目录,不能保存在源码中。

这种方法优于按层次划分包的方法,表现在以下几点:

包是高内聚的,并且模块化,包与包之间的耦合性被降到最低。

代码的自描述性增强. 读者只需看包的名字就对程序有些什么功能或特征有了大概的印象。在《代码大全》中, Steve McConnell 将自描述性的代码比作 "易读的圣杯",来表达它的易读性。

把类按照每个特征和功能区分开可以很容易实现分层设计。

相关的成员在同一个位置。不需要为了编辑一个相关的成员而去浏览整个源码树。

成员的作用域默认是包内私有。只有当另外的包需要访问某个成员的时候,才把它修改为public. (需要注意的是修改一个类为public,并不意味着它的所有类成员都应该改为public。public成员和包内私有(package- private)成员是可以在同一个类里共存的。)

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

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

删除一个功能或特征只需要简单的删除一个文件夹。

每个包内一般只有很少的成员,这样包可以很自然的按照进化式发展。如果包慢慢变的太大,就可以再进行细分,把它重构为两个或者更多新的包,类似于物种进化。而按照层次划分的方式,就没办法进化式发展,重构也不容易。

一些框架推荐使用层层定义包的传统的方式做为包的命名方法:由于使用传统的包命名,开发者总能知道在哪个位置可以找到

这些项目,但是为什么避免人们这样做呢?使用另一种按特征定义包的风格,就不需要这种单调的操纵,因此,按特征定义完

全超越了任何其它命名约定。约书亚布洛赫在《高效的Java》一书中说到:区分一个设计好坏的唯一重要因素是模块内部隐藏

的数据和其它模块中涉及的实现过程的程度。

3.习惯用JavaBeans而不是不可变对象

不可变对象是构造后状态不改变。Scala的主要创造者Martin Odersky最近还称赞过这种不可变对象。在《高效的Java》一书中,Joshua Bloch列举了大量实例支持使用不可变对象,并总结了很多优点。但他的意见,似乎很大程度上被忽略。大多数程

序使用JavaBeans来替代不可变对象。JavaBean明显要比不可变对象复杂的多,因为它的巨大的声明空间。粗略的讲,你可以

把JavaBean看作是与不可变对象完全相反的对象:它允许最大的可变性。

JavaBean常被用来做数据库记录的映射。假如你要从数据库记录集映射一行为对象,不

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