论面向组合子程序设计方法 之 失乐园 之补充 OOXPTDD算法
程序员文章站
2022-07-04 21:19:30
...
失乐园发了之后。有的朋友对“OO是一种自顶向下的方法论”的论述有些疑问。
这里补充一下。
如果认可OO是一个责任分配体系,那么自顶向下就是一个自然的逻辑结论。
没有分析出来“需求”,也就无所谓“责任”,于是根本就无所谓“OO”了。
这种从分析需求,分解需求,分配责任,再分析子需求,分解子需求,在子模块内分配责任的方式,被我称为“自顶向下”。
至于说xp, tdd和自顶向下是不矛盾的。它们也都是要依赖于需求分析的。test case是什么?不就是需求么?
当然,这些方法论并不要求需求百分之百的细化,它们认可变化,拥抱变化,力求变化时的代价最小。不过,不管怎么说,它们仍然是要着眼于当前的需求的,应对需求变化的能力是另外一个话题,它并不能表示这些方法论不是自顶向下。
“自底向上”确实古已有之,PO时代也确实有这个提法。但是,它的缺乏方向性,缺乏重用能力,缺乏整体组织等等弊病让它从来都没有成为设计的主流,没有成为一个主导整体或者部分设计的思想。
最多算是公有制*内的私有制补充而已。PO时代它的地位就不高,到了OO时代,强调职责分配,它更是几乎沦为一个历史词汇了。
也许你会说,我在调用xcerces, stl的时候,难道也是自顶向下?我可从来没有给stl的作者分配过责任啊。
这其实和责任分配并不矛盾。中间如果发现可以重用的模块,只要这个模块向外承诺的责任符合我的期望,我就可以用。仍然是自顶向下,需求驱动,责任驱动。
而且,xcerces这些库设计的时候,也一样要假想一下需求,然后从需求出发的。(stl不是很一样,它一定程度上有CO的影子,从基本组合子逐渐演绎的方法在其中也有体现,比如那个iterator和所有围绕iterator的算法等)
这里补充一下。
如果认可OO是一个责任分配体系,那么自顶向下就是一个自然的逻辑结论。
没有分析出来“需求”,也就无所谓“责任”,于是根本就无所谓“OO”了。
这种从分析需求,分解需求,分配责任,再分析子需求,分解子需求,在子模块内分配责任的方式,被我称为“自顶向下”。
至于说xp, tdd和自顶向下是不矛盾的。它们也都是要依赖于需求分析的。test case是什么?不就是需求么?
当然,这些方法论并不要求需求百分之百的细化,它们认可变化,拥抱变化,力求变化时的代价最小。不过,不管怎么说,它们仍然是要着眼于当前的需求的,应对需求变化的能力是另外一个话题,它并不能表示这些方法论不是自顶向下。
“自底向上”确实古已有之,PO时代也确实有这个提法。但是,它的缺乏方向性,缺乏重用能力,缺乏整体组织等等弊病让它从来都没有成为设计的主流,没有成为一个主导整体或者部分设计的思想。
最多算是公有制*内的私有制补充而已。PO时代它的地位就不高,到了OO时代,强调职责分配,它更是几乎沦为一个历史词汇了。
也许你会说,我在调用xcerces, stl的时候,难道也是自顶向下?我可从来没有给stl的作者分配过责任啊。
这其实和责任分配并不矛盾。中间如果发现可以重用的模块,只要这个模块向外承诺的责任符合我的期望,我就可以用。仍然是自顶向下,需求驱动,责任驱动。
而且,xcerces这些库设计的时候,也一样要假想一下需求,然后从需求出发的。(stl不是很一样,它一定程度上有CO的影子,从基本组合子逐渐演绎的方法在其中也有体现,比如那个iterator和所有围绕iterator的算法等)
推荐阅读
-
论面向组合子程序设计方法 之 创世纪 OOlog4j编程Websphere脚本
-
论面向组合子程序设计方法 之 微步毂纹生 设计模式OO八卦脚本音乐
-
论面向组合子程序设计方法 之 燃烧的荆棘 IOCOOXP
-
论面向组合子程序设计方法 之 创世纪 OOlog4j编程Websphere脚本
-
论面向组合子程序设计方法 之 新约 设计模式OOFP交通Websphere
-
论面向组合子程序设计方法 之 燃烧的荆棘 IOCOOXP
-
论面向组合子程序设计方法 之 失乐园 之补充 OOXPTDD算法
-
论面向组合子程序设计方法 之 重构 设计模式OOIOCBean配置管理
-
论面向组合子程序设计方法 之 oracle OracleOOAntSpringHaskell
-
论面向组合子程序设计方法 之 重构2 OOCC++C#IOC