将重复代码分解为单独函数的名称

发布于 2024-09-29 10:02:20 字数 864 浏览 1 评论 0原文

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

在伪代码中,之前:

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)

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

I'm trying to find research/advice on a particular code refactoring pattern, but I'm finding it hard to locate, since I'm not sure whether there's a good name for it. It's very similar to factoring out repeated code, except the code wasn't repeated in the first place: it was just stashed away in a conditional branch of a larger function, accessible via a parameter of that function.

In pseudocode, the before:

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)

After:

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)

Edit: added example calls. Wasn't clear that the removed parameter was part of the refactoring.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

岁月流歌 2024-10-06 10:02:20

用于将重复代码分解为单独方法的模式称为“提取方法重构” 。

The pattern used to factor out repeated code into separate methods is called "extract method refactoring".

小霸王臭丫头 2024-10-06 10:02:20

我相信这是面向对象模块化的基本情况。您将两个独立的流程分开,它们不一定必须结合在一起。

I believe this is a basic case of OO modularity. You're separating out two discrete processes that don't necessarily have to go together.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文