2010-11-05 92 views
3

近期风格的代码比较老式的代码与方法,有一两件事立即出现:偶尔的所有方法在同一时间做了一堆东西(我并特别提到了Fortran代码我现在开放),目前的做法规定你有做事情的方法,以及只是调用做事情的方法的方法。方法是做委托

如何这种风格正式名称,而那是什么推动了它的触发(例如:一个文学论文,图书馆/框架,只是出于自身出现的共识)?

+0

这种类型的设计产生的原因是由于绝大多数人无法正​​确理解14页长的功能并将其内部的每个部分内化。 – wheaties 2010-11-05 14:30:07

+0

@wheaties:这很明显,但很显然很多人都能够做到这一点,因为我看过的所有Fortran代码都采用14页长的策略。 – 2010-11-05 14:40:02

+0

也许是提供(为了将来可能的需要)额外的间接级别?这对于制定者/获得者尤其有效。 – ruslik 2010-11-05 14:45:27

回答

2

我相信这被称为“结构化编程”。另外,请查看Structured Analysis

Edsger Dijkstra算法是你的男人在这里...

+0

这就是为什么我不喜欢这种方法! (他也是对抗goto的)。 – ruslik 2010-11-05 14:50:41

1

代表团是可以在很多设计中使用的工具。立即想到的是观察者模式(在ASP.NET中用于UI事件处理),策略模式 - 可以使用委托来实现......也有更多的负载。

2

干 - Don't Repeat Yourself和维基百科文章中提到的其他“哲学”在这方面发挥了很大的作用,以及确保每种方法只是做一件事。

+0

我会说更多的“关注点分离”,然后...... – 2010-11-05 14:41:18

+0

@Stefano - 它们都有某种程度的相关性。 DRY和关注的分离都鼓励创建从不同地方被调用的小方法。 – ChrisF 2010-11-05 14:56:20

1

这一切都发生得太快了,我是不是在一个足够大的组织,看到发生的一切,但我可​​以告诉你一些技巧的上涨导致了这一点:

  1. 分离的担忧 。 Foo :: getNeighbor委托给它的成员对象Bar :: getNeighbor委托给它的成员对象Baz :: getNeighbor,这样如果其中一个变化不是所有其他函数都需要知道它的话。也就是说,如果Baz :: getNeighbor开始接受一个字符串,并且Bar通过“biff”,Foo不知道也不在乎。
  2. 单元测试。打破这些功能,以便能够更仔细地检查一小部分逻辑中的错误,从而挽回整整一天的工作价值。一个14页长的函数很难破译并找出问题出在哪里。 4线功能要容易得多。
  3. OOP。人们开始将所有东西都推到一个物体上,即使它不需要在物体中。然后再次,一旦找到了平衡点,我们出现了良好的设计模式,事情就有所改善。

天啊,我知道还有更多。就像UML的兴起一样。