Имя для выделения повторяющегося кода в отдельную функцию - PullRequest
1 голос
/ 28 октября 2010

Я пытаюсь найти исследование / совет по конкретному шаблону рефакторинга кода, но мне трудно его найти, так как я не уверен, есть ли хорошее имя для него. Это очень похоже на выделение повторяющегося кода, за исключением того, что код не был повторен в первую очередь: он был просто скрыт в условной ветви более крупной функции, доступной через параметр этой функции.

В псевдокоде, перед:

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)

Редактировать : добавлены примеры звонков. Не было ясно, что удаленный параметр был частью рефакторинга.

Ответы [ 2 ]

7 голосов
/ 28 октября 2010

Шаблон, используемый для разделения повторяющегося кода на отдельные методы, называется " извлечение метода рефакторинга ".

0 голосов
/ 28 октября 2010

Я считаю, что это базовый случай ОО модульности .Вы отделяете два отдельных процесса, которые не обязательно должны идти вместе.

...