【问题标题】:Name for factoring out repeated code into separate function将重复代码分解为单独函数的名称
【发布时间】:2011-05-02 01:35:40
【问题描述】:

我正在尝试查找有关特定代码重构模式的研究/建议,但我发现它很难找到,因为我不确定它是否有一个好名字。这与分解重复代码非常相似,只是代码一开始没有重复:它只是隐藏在一个更大函数的条件分支中,可以通过该函数的参数访问。

在伪代码中,之前:

function frobnicate(id, check_only = false) {
    if id cannot be frobnicated
        return false
    if check_only
        return true
    // frobnicate id
    return true
}

// example calls:
okay_to_frobnicate = frobnicate(id, true)
frobnicate_success = frobnicate(id)

之后:

function can_be_frobnicated(id) {
    if id cannot be frobnicated
        return false
    else
        return true
}

function frobnicate(id) {
    if not can_be_frobnicated(id)
        return false
    // frobnicate id
    return true
}

// example calls:
okay_to_frobnicate = can_be_frobnicated(id)
frobnicate_success = frobnicate(id)

编辑:添加示例调用。不清楚删除的参数是重构的一部分。

【问题讨论】:

    标签: design-patterns language-agnostic refactoring


    【解决方案1】:

    用于将重复代码分解为单独方法的模式称为“extract method refactoring”。

    【讨论】:

    • 哇!这很快,正是我想要的。谢谢。
    • 欢迎您!尽管您的最终代码与重构的结果略有不同。 check_only 参数怎么了?
    • 这就是我最初的想法。现在检查只是外部的,因为检查功能是分开的。
    【解决方案2】:

    我相信这是 OO modularity 的基本案例。您正在分离两个离散的进程,它们不一定必须一起进行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-16
      • 1970-01-01
      • 1970-01-01
      • 2019-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多