中国开发网: 论坛: 程序员情感CBD: 贴子 421374
mhappy
偶ZT另一头牛的评论。。。这年头,遍地牛群啊。。。
顺便和大家交流一下,谈谈我的一些看法。
为了好说,大体把软件分为应用和系统两种。两种类型没有什么高低之分,难的地方不一样。从应用软件来看,难的是建模。对各种企业逻辑,很难组织一个通用的模型,然后对它进行设计,现在有的比较公认的模型就是工作流,但是也有几个版本。从系统软件来看,难的是计算机学:各种算法,设备本身的各种特性。
但是,这些都不包括什么汇编这样的”让人看不懂“的东西。开口闭口就说asm,其实就是告诉我们,半罐水来了。register,stdcall,这样的约定,如果让我特意拿出来现,我觉得简直就是丢自己的脸。从语言角度,我以为从简单到困难的排列方式是:stucted,asm,oo,gp。structed方式,和我们直觉思维方式相似,有一个顺序;asm很繁琐,同时要考虑机器的思维,但是也是顺序思维,也就那么回事,没什么难;oo,用类表达概念,显然和前两种语言的思考是完全不一样的了,需要在思维上来个转变。如果还一味的在里面加AfterXXX的方式,也就退回到顺序执行了。这个方式,就有点goto语句一样,直观,但是容易混乱。TDataSet的AfterXXX,我想大家是维护得头疼了把。在一个企业逻辑中,它人为的把企业逻辑给分成了计算机运行片断,当然要避免。所以,我们设计,是要做全面考察的,不要做一个能用的东西就好,否则有得你头疼的时候。我们看看AOP,它的目标是横向跨越几个操作,这个显然和顺序执行是正交的,如果还采用AfterXXX这样的方式,虽然能实现想要的功能,显然有点南辕北辙的味道。所以,我说这个应该交给语言本身来实现。这时候,完全可以看看采用GP怎样做了。GP,名字就是泛型,显然的告诉我们,考虑一个概念,不管具体。而用OO,一写下这个类,就完全确定这个东西了。OO提倡的是一个家族树,而GP提倡的是相似概念的横相层次。当然,interface也是相似的,但是interface只考虑操作,而GP考虑全部。这么看,GP天生就是用来做正交设计的,AOP就是一个正交的例子,用GP来做,很合适。采用GP,能知道对哪些需要的class进行组合,好维护,但是也就变得不灵活;如果是语言本身解决这个问题,确实可以做到对任意一个class进行操作,确实使用简单,但是如果代码组织不好,维护性也就差。

如果各位需要看AOP的代码,上SourceForge,搜索Aspect,AOP到处都是,包括Delphi的。

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录