2

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

我不知道这个范例的名称。起初我以为它可能是函数式编程或模块化编程,但似乎并非如此。谁能帮我弄清楚这个范式叫什么?此外,我可以阅读到一篇维基百科文章的链接,其中讨论了这个确切的用例(当然,如果你告诉我范式的名称,我可以很容易地自己查找)。

提前致谢。

4

5 回答 5

1

它基本上只是“重构”。

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

于 2011-05-31T18:32:18.910 回答
1

重构是改变代码而不改变其行为。当您将代码分解为更多方法时,称为重构为方法。当您采用这些方法并将它们的行为放入许多中时(这有助于维护每个对象/类的单一职责),这称为对对象的重构。

于 2011-05-31T18:34:18.757 回答
1

从超大方法中的现有代码创建一个新的、更小的方法的实际重构实践称为提取方法

例子

原始代码

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 写了一本关于重构概念的精彩书籍,您可以在此处找到。本书将为您提供逐步的方法来解决您将需要的大部分重构。

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

于 2011-10-20T16:15:59.243 回答
0

这种做法称为重构。

重构源于因子的数学思想。如此有效地,您正在拆分您的方法以获得相同的结果。

编辑我从一开始就这样做。我将编写大量代码并研究如何以非常小的增量删除重复。它是 TDD 口头禅的一部分。

红色的。绿色。重构以消除重复。

于 2011-05-31T18:31:21.220 回答
0

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

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

于 2011-05-31T18:32:51.490 回答