闲扯Annotation

首先批评一下Blogdriver的RSS,好像自从被BC收购以后,就开始越来越滞后,常常要过好几天才能看到它更新一次RSS,所以偶错过了很多gigix的新文章,874之。

上午跟令狐谈了一下现在gigix的RSS里“最新”(已经快半个月了-_-|||)的一篇《Annotation Sucks?!》,gigix和robbin显然都是反对annotation的。robbin认为这破坏了JAVA的纯洁性,gigix认为这不如XML的灵活性。

这个JAVA新增的feature很显然是跟.net的Attribute学的。但我和令狐倒觉得这个feature很好。

令狐说:我本来是很欣赏的,觉得把该表达的东西都放到代码中,不会产生“多处修改”而造成代码不同步的隐患。也比较清晰明了。但是gigix这种说法貌似也有道理。差不多就是attribute那个意思。不过感觉attribute大概因为遗留包袱少,更加激进

我觉得从性能角度上说,annotation还是好的。毕竟需要用到annotation的方面都是很少改变的方面。而且如果它要改变通常源码也需要相应的改变。

令狐还转了一个在javaeye看到的说法:基本上不存在只要修改xml而不要修改代码的情形

我之所以会关注这个问题,是因为我在用DELPHI实现动态代理来开发一个WEB框架时,业务逻辑是用BPL实现,二者之间打算通过AOP方式插入关于登录验证的部分。可是困难在于,并不是所有的页面调用都需要验证,那么如何区分呢?

当 然,如gigix所说,可以通过外部XML来描述。但是如果有Attribute/Annotation这样的MetaData,我觉得是一个更好的解决 方案。毕竟是否需要验证本身也是业务逻辑的一部分,与业务代码有密切的关系,分离到外部的XML中不但带来性能问题,还存在着潜在的不一致风险,而且这种 灵活性又是不必要的。

所以还是觉得Attribute/Annotation是不错的东东。DELPHI里没有这个东东,看来我只好在方法名上做点文章了,虽然难看但总算可以实现吧。