Я пытаюсь найти исследование / совет по конкретному шаблону рефакторинга кода, но мне трудно его найти, так как я не уверен, есть ли хорошее имя для него. Это очень похоже на выделение повторяющегося кода, за исключением того, что код не был повторен в первую очередь: он был просто скрыт в условной ветви более крупной функции, доступной через параметр этой функции.
В псевдокоде, перед:
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)
Редактировать : добавлены примеры звонков. Не было ясно, что удаленный параметр был частью рефакторинга.