通常我通过许多私有函数实现类(C#,C ++),除了分离关注点和其他目的之外没有任何其他用途。可读性,可维护性和范围的逻辑。例如,如果我看到一个100行长的函数并且有3条注释将它分成虚拟的1/3节块,那对我来说就是3个函数。所以我将这个较大的函数分解为3个较小的函数,现在原始函数只调用3个函数。
我不知道这个范例的名称。起初我认为它可能是函数式编程或模块化编程,但似乎并非如此。任何人都可以帮我弄清楚这个范例叫什么?另外,我可以阅读的维基百科文章的链接很有用(当然如果你告诉我范例的名称,我可以很容易地自己查看)。
提前致谢。
答案 0 :(得分:1)
它基本上只是“重构”。
答案 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。
当您的编程语言支持作为第一类实体的函数时,组合特别强大,这意味着您可以将函数作为参数传递给另一个函数,该函数返回一个在运行时之前不存在的新函数。