将功能分开的行为被称为什么?

时间:2011-05-31 18:30:14

标签: function paradigms

通常我通过许多私有函数实现类(C#,C ++),除了分离关注点和其他目的之外没有任何其他用途。可读性,可维护性和范围的逻辑。例如,如果我看到一个100行长的函数并且有3条注释将它分成虚拟的1/3节块,那对我来说就是3个函数。所以我将这个较大的函数分解为3个较小的函数,现在原始函数只调用3个函数。

我不知道这个范例的名称。起初我认为它可能是函数式编程或模块化编程,但似乎并非如此。任何人都可以帮我弄清楚这个范例叫什么?另外,我可以阅读的维基百科文章的链接很有用(当然如果你告诉我范例的名称,我可以很容易地自己查看)。

提前致谢。

5 个答案:

答案 0 :(得分:1)

它基本上只是“重构”。

http://en.wikipedia.org/wiki/Code_refactoring

答案 1 :(得分:1)

重构正在改变代码而不改变其行为。当您将代码分解为更多方法时,它被称为Refactoring to Method。当你采用这些方法并将他们的行为放入许多(这可以帮助维护每个对象/类的单一职责)时,它被称为重构为对象

答案 2 :(得分:1)

在超大方法中从现有代码创建一个新的,更小的方法的实际重构实践称为Extract Method

实施例

原始代码

void printOwing() {
    printBanner();

    //print details
    System.out.println ("name:  " + _name);
    System.out.println ("amount " + getOutstanding());
}

执行提取方法

void printOwing() {
    printBanner();
    printDetails(getOutstanding());
}

void printDetails (double outstanding) {
    System.out.println ("name:  " + _name);
    System.out.println ("amount " + outstanding);
}

如果您尝试退出某个方法的代码甚至不属于该类,那么您也可以使用Extract Class

Martin Fowler,业内首屈一指的软件工匠之一,写了一本关于重构概念的精彩书籍,你可以找到here。本书将为您提供逐步的配方,以解决您需要的大部分重构问题。

此外,JetBrains为几乎所有内置一些非常好的重构工具的语言创建了一些非常好的IDE。它们还有一个名为ReSharper的Visual Studio插件,它提供了一些相同的功能和好处。

答案 3 :(得分:0)

这种做法叫做重构。

重构来自于因素的数学思想。因此,您可以有效地分割方法以获得相同的结果。

编辑我从一开始就这样做。我将编写一堆代码并查看如何以较小的增量删除重复。这是TDD口头禅的一部分。

红色。绿色。重构删除重复。

答案 4 :(得分:0)

将大函数分解为较小的函数通常称为重构,但将较小函数组合在一起的行为称为Composition

当您的编程语言支持作为第一类实体的函数时,组合特别强大,这意味着您可以将函数作为参数传递给另一个函数,该函数返回一个在运行时之前不存在的新函数。