posts - 176, comments - 240, trackbacks - 0, articles - 7

[导入]无参数调用

Posted on 2005-11-14 15:37 canonical 阅读(308) 评论(0)  编辑  收藏 所属分类: 设计理论
     全局变量在现代程序设计中可谓是臭名昭著。函数之间通过全局变量形成隐蔽的couple, 其联系难以追踪,难以控制,也使得程序的意图变得非常隐晦。但从另一方面说,隐蔽的关联也意味着两个函数的关联没有被固化,可以随时根据需要做出调整。例如,
    funcA(varA,varB,varC);
        funcB(varA,varB,varC,varD);
        funcC(varA);
        funcD(varA,varB,varC,varD);
    在以上程序中,funcA将调用funcB,但是funcB需要一个特殊的参数varD。我们可以选择在funcA的参数列表中增加这一参数,但这样 funcA的定义就破坏了它本身的意图:它包含了一些具体的与自身意图无关的实现细节。一旦funcB的实现改变,例如它不再需要varD, 或者需要更多的参数, 则funcA需要随之进行调整。
    实际上在程序中我们可以通过两两关系进行参数接力,也可以采用中心化的方式,即各个函数都从环境(公共变量区)中取得所需参数。面向对象是一种折衷的解决方案:对象的成员函数之间通过成员变量形成隐蔽的依赖,但是这种依赖又不会扩散到对象之外。最理想的情况下,我们可以采用无参数的函数调用,函数名揭示出我们的意图而不用考虑交互的细节。在写伪代码的时候,经常可以发现我们实际定义并使用的参量要远少于最终实现所用到的参量。如果我们要实现伪代码方式的程序书写,那么在变量生存空间上还要做出比面向对象更加灵活,更加精细的控制。

只有注册用户登录后才能发表评论。


网站导航: