JiveJdon Community Forums
在线233人 Home | 论坛 | 培训咨询 | 精华 | 查搜 | 注册 | 登陆 |
首页 » 论坛 » 设计模式、框架和架构
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表
???en_US.forumThreadNext.name??? 下一主题
这个主题共有 3 回复 / 1 页 [ ]  发表新帖子  回复该主题贴
HiLoveS

发表文章: 4
注册时间: 2007年08月13日 22:05
给他发消息
Annotation到底是“银弹”还是灾难? 发表: 2007年08月13日 22:19 回复
随着软件越做越大、越做越复杂,配置文件也多如牛毛,于是我们开始在代码中写入Xdoclet Tag或Annotation代码,使用自动化工具生成相应的配置文件或者规避配置文件。
我开始想,配置文件的作用是什么?难道不是对软件进行解耦吗,比如在持久层和数据库之间解耦,以便更改数据库地址、用户、密码、表名之后不必再build代码。一个大型的开发团队可能有编码人员、架构师、测试员、部署员、数据库架构师这些角色,而且这些角色可能不由一个人担任。这些人之间的沟通也许不会通畅,客户与开发团队间也会存在沟通不通畅的时候,于是特别经常必需在客户的生产场所直接build软件,因为这时总会有代码与客户现存的生产软件之间有不匹配的地方,为便于修改于是直接选择在客户生产场所build。但是在软件交付运行之后,客户可能存在特殊的商业策略,比如定期更换数据库连接帐户的密码,这就不可能采用将密码硬编码在软件中的方法,因为每更换一次密码就要build一次软件这是不可思议的。如果采用配置文件就能解决这些问题。
问题是,既然配置文件是将易变的代码从硬编码的困境中解放出来,那么Annotation不是将一切回归原点吗?修改硬编码的配置再build软件和修改Annotation再build软件难道有区别吗?使用配置文件就是为了随时随地、容易的更改,而Annotation无疑让这些更困难了。
如果客户采用的策略是直接修改配置文件,那么他又不得不同步源代码中的Xdoclet Tag;如果采用Xdoclet Tag方式,那么他又不能较方便的更改配置文件;如果采用Annotation方式,那么他又不得不重复build软件。
我并不否认Xdoclet Tag的用处,在初次生成配置文件时它确实可以减少书写工作量,但是只要生成了配置文件之后,就要在同步Tag和配置文件上下功夫,这个工作量是以前所没有的。但是我实在搞不懂,回归紧耦合的Annotation到底好在哪里?Hibernate、Spring等框架一直致力于使用外置的xml文件来实现解耦,而Annotation一夜之间就让这些轰然倒塌。这些框架一开始费那个劲干嘛,直接做成硬编码不就好了。
因此,我在想对于开发团队来说,采用Xdoclet Tag生成配置文件的方式更好;对于客户来说,直接修改配置文件更好;对于Annotation来说,它本不该存在。
banq

发表文章: 9074
注册时间: 2002年08月03日 17:08
给他发消息
回复:Annotation到底是“银弹”还是灾难? 发表: 2007年08月14日 11:26 回复
非常不错的观点,我曾经也写过类似的帖子:

终于有人开始反感Java 1.5的Annotation了
http://www.jdon.com/jivejdon/thread/22356.html

原来我也有将Annotation和Xdoclet比较的帖子,不过当时和我争吵的人还没有明白他们异同处。

Annotation是一个双刃剑。根据我近一年的思考,我认为可以给Annotation使用的一个相对准确定位:
Annotation应该看成是另外一种接口应用,是接口的另外一种形式表现吧。Annotation引入可以让代码更加优雅,能够体现主接口和次接口等作用,体现了主次之分,次要方面可以使用Annotation来实现。

使用Annotation还是坚持OO解耦原则,Annotation只是更加细分了以前XML配置作用其中一部分,而不是全部,一些数据库等配置还是必须用配置文件来实现。
ghostv1

发表文章: 34
注册时间: 2007年08月29日 16:06
给他发消息
re:Annotation到底是“银弹”还是灾难? 发表: 2007年08月29日 16:25 回复
Annotation在我的理解里就是一个提供类附加信息的方式,类似与Java Reflection API中的一些类操作对象。
例如,我们可以通过一个对象知道它的类型,并且知道它的结构(属性,方法等),包括Annotation,所有Annotation只是对现有的类结构信息的一点补充,它让我们知道在设计静态的类型的时候,我们不但可以知道一些语言状态下的结构信息,而且还可以知道一些除了语言之外的一些其他信息(例如业务,权限)等,这些信息能够进一步帮助我们在更高的层次上对“对象”进行反射操作(例如,过去我们也许只是根据方法名称来判断是否进行反射触发,现在可以有Annotation来做更多复杂的判断)
Annotation的作用并不在于它单独的实现,而是在于它和其他技术的有效结合,例如Annotation+AOP就是一个非常不错的例子(不再详细说明)
Annotation应用的地方应该还是局限于程序,也就是说Annotation是程序实现的一部分,如果觉得这种Annotation是程序的一部分,那么就可以使用,如果是配置的一部分,那么就不要滥用它,这样Annotation才不会被很多的人误解。
Annotation就是程序!!!
banq

发表文章: 9074
注册时间: 2002年08月03日 17:08
给他发消息
回复:re:Annotation到底是“银弹”还是灾难? 发表: 2007年08月29日 18:09 回复
Annotation就是程序

赞同
这个主题有 3 回复 / 1 页 [ ]
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表    返回页首  返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Spring Struts
查询本论坛内 回复超过的热门帖子
快速发表回复
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com

anti spam