Wednesday, June 07, 2006
必要的抽象还是over-engineering?
刚看了一篇DevWorks上的文章"界面组装器模式"。开始觉得是over-engineering,因为隐隐约约感到很像自己,两三年前,刚看完GOF的书,很疯狂地programming with interfaces,不过后来细想一想,作者这么写还是有道理的,因为他的项目有抽象出接口的需求。而当时自己,是没有需求却幻想需求。
是不是要抽象,很难界定,但要不要封装,却是一定的。因为封装就是分离,把变化与不变分离,把变颜色和变形状分离,这种分离,总是好的。
想想绝对需要的一些封装,比如元数据文件,我觉得是必要的,上文作者在一些情况下不同意用元数据文件,但是我觉得不要把元数据文件搞得太复杂就可以。再说可以对XML文件进行validation,JAVA已经把property类拓展到了XML格式,所以能用,绝对应该用。仅仅是为了消除重编译的情况就值得。
前一阵用过一个vcard4j开源库,源文件中间有很多结构类似的类,比如表示各种电话号码的类,FAX, Mobile, or Fixed line。这些类有很多共同的部分,仅仅是相应的函数名不同,但是客观要求不能用类继承的方式进行抽象,所以作者为了避免repeat yourself,就写了一个parser用来生成这些大部分重复的source code.也就是这样一个过程,配置元数据文件-> 运行parser(1.读元数据;2.根据元数据生成部分source code)->编译生成的source code并打包发布。
这是个很好的抽象和封装,这样就把怎样生成文件和生成什么样的文件分离开来,对于我这样后来使用这个库的人来说,改改元数据文件,运行一个parser就能够定制化自己的类,确实省去不少读代码,改代码,写代码的时间。
是不是要抽象,很难界定,但要不要封装,却是一定的。因为封装就是分离,把变化与不变分离,把变颜色和变形状分离,这种分离,总是好的。
想想绝对需要的一些封装,比如元数据文件,我觉得是必要的,上文作者在一些情况下不同意用元数据文件,但是我觉得不要把元数据文件搞得太复杂就可以。再说可以对XML文件进行validation,JAVA已经把property类拓展到了XML格式,所以能用,绝对应该用。仅仅是为了消除重编译的情况就值得。
前一阵用过一个vcard4j开源库,源文件中间有很多结构类似的类,比如表示各种电话号码的类,FAX, Mobile, or Fixed line。这些类有很多共同的部分,仅仅是相应的函数名不同,但是客观要求不能用类继承的方式进行抽象,所以作者为了避免repeat yourself,就写了一个parser用来生成这些大部分重复的source code.也就是这样一个过程,配置元数据文件-> 运行parser(1.读元数据;2.根据元数据生成部分source code)->编译生成的source code并打包发布。
这是个很好的抽象和封装,这样就把怎样生成文件和生成什么样的文件分离开来,对于我这样后来使用这个库的人来说,改改元数据文件,运行一个parser就能够定制化自己的类,确实省去不少读代码,改代码,写代码的时间。
Tuesday, June 06, 2006
Rich Client技术
插播法网战况:刚刚,Hingis和Safina两位小将(应该还是可以这么说的吧,Hingis才刚刚二十一二岁) 都在第一盘鏖战抢七失利的情况下,第二盘脆败,分别输了个6:1和6:0(我也不知道这个词我是从哪里学的,不过是刚学不久,I'm sure)
现在Rich Client很热门(呵呵,自己以前也写过JavaScript,记得那个时候还写过JS版的“北京浮生记”,知道客户端脚本的强大),现在终于认真开始研究这门技术了。
现在脑子中的Rich Client实现有:
XUL (刚刚看了“XUL - 快速开发跨平台易用用户接口的新途径”,现学现卖),个人觉得这个技术前景有限,局限在于Mozilla平台,虽然现在Firefox市场占有率近四成,但是剩下的五成多很难攻克,因为Windows+IE确实让人用的很顺手也很顺心,如果我不学CS,我八成还是用IE。
Macromedia Flex,很有前途,我观察到,越来越多的多媒体内容提供商(精加工商,比如Google video)使用swf文件作为媒介,可以避免插件,播放器,带宽或者防火墙等问题。但是SWF仅是human-readable, not computer-readable,从道理上讲我们又应该摒弃这种copyright的东西,人们还是懒惰啊。(最近下载Flash player发现网站转到了Adobe,才知道“MM”被“A盗”霸占了 【盗趾居然和柳下惠是亲兄弟】。想当年用的JRun web server并到MM的时候自己还很是高兴,因为那时候喜欢Macromedia,但是现在这个并购让我感觉五味陈杂,Adobe现在太强大了, became a ruled desktop media publisher)
Ajax,能力和前景有限,因为还是网站的一种加强形势,不过相比redirect and refresh, Ajax确实给予我们很COOL的体验。
...期待进一步研究
广告:www.frenchopne.org上面的交互程序都转成swf的了,说明IBM也在rich client tech for highly interactive application上转了风向,把自己一手养大的Java Applet扔了。
现在Rich Client很热门(呵呵,自己以前也写过JavaScript,记得那个时候还写过JS版的“北京浮生记”,知道客户端脚本的强大),现在终于认真开始研究这门技术了。
现在脑子中的Rich Client实现有:
XUL (刚刚看了“XUL - 快速开发跨平台易用用户接口的新途径”,现学现卖),个人觉得这个技术前景有限,局限在于Mozilla平台,虽然现在Firefox市场占有率近四成,但是剩下的五成多很难攻克,因为Windows+IE确实让人用的很顺手也很顺心,如果我不学CS,我八成还是用IE。
Macromedia Flex,很有前途,我观察到,越来越多的多媒体内容提供商(精加工商,比如Google video)使用swf文件作为媒介,可以避免插件,播放器,带宽或者防火墙等问题。但是SWF仅是human-readable, not computer-readable,从道理上讲我们又应该摒弃这种copyright的东西,人们还是懒惰啊。(最近下载Flash player发现网站转到了Adobe,才知道“MM”被“A盗”霸占了 【盗趾居然和柳下惠是亲兄弟】。想当年用的JRun web server并到MM的时候自己还很是高兴,因为那时候喜欢Macromedia,但是现在这个并购让我感觉五味陈杂,Adobe现在太强大了, became a ruled desktop media publisher)
Ajax,能力和前景有限,因为还是网站的一种加强形势,不过相比redirect and refresh, Ajax确实给予我们很COOL的体验。
...期待进一步研究
广告:www.frenchopne.org上面的交互程序都转成swf的了,说明IBM也在rich client tech for highly interactive application上转了风向,把自己一手养大的Java Applet扔了。