Один из методов, которые я обычно использую в нашей кодовой базе, написан с ошибками (и это предшествовало мне).
Это действительно раздражает меня не просто потому, что оно введено неправильно, но, что более важно, оно заставляет меня ВСЕГДА неправильно вводить имя при первом наборе (а затем я должен помнить: «О, верно, это должно быть введено неправильно…»)
Я делаю несколько изменений вокруг оригинального метода. Должен ли я воспользоваться возможностью, чтобы просто переименовать чертов метод?
refactoring
Раз два три
источник
источник
Ответы:
Абсолютно.
Тем не менее, если ваш код был выпущен как API, вы также должны обычно оставлять метод с ошибками и переадресовывать его на метод с правильно названным именем (пометив его как устаревший, если ваш язык поддерживает такие вещи).
источник
Есть случаи, когда вам следует избегать таких рефакторингов:
Если метод используется в общедоступном интерфейсе. Каноническим примером является неправильное написание реферера в HTTP реферере , неправильное написание сохраняется, потому что изменение орфографии теперь будет иметь слишком много последствий.
Если кодовая база не покрыта какими-либо тестами. Любой рефакторинг должен быть выполнен для тестируемого кода, чтобы иметь возможность проводить регрессионное тестирование. Рефакторинг кодовой базы, которая не тестируется, особенно рискован. Если у вас много времени, начните с добавления тестов; если вы работаете в условиях нехватки времени, риск, связанный с внесением незначительных ошибок, не самый лучший вариант, если вы хотите доставить вовремя.
Если метод может быть использован необычным способом , что делает его использование практически невозможно найти (через Ctrl + F или с помощью автоматического инструмента рефакторинга). Например, в C # метод может быть вызван через Reflection, что делает диалог Rename в Visual Studio неэффективным. В JavaScript также
eval()
трудно найти вызываемую внутри функцию . В PHP переменные переменные могут вызвать проблемы.Если размер проекта огромен и метод может быть использован другими командами. Это похоже на первый пункт, то есть интерфейс, который вы предоставляете другим командам, может рассматриваться как общедоступный интерфейс.
Если вы имеете дело с жизненно важным проектом. Скорее всего, опечатка не слишком важна, чтобы оправдать несколько месяцев оформления документов, чтобы изменить название метода и гарантировать, что ни один пациент не получит в десять раз больше разрешенного излучения или какого-либо челнока, чтобы просчитать его скорость.
В любой другой ситуации, не стесняйтесь переименовать метод.
источник
Я сделал это несколько месяцев назад (по разным причинам). Шаги, которые я предпринял (язык был Perl):
Через некоторое время удалите метод со старым именем.
Конечно, ваш пробег будет меняться.
источник
Хороший способ не нарушать существующий код - связать имя нового метода со старым в таком виде, как
а затем пометьте старый метод как устаревший (если ваш язык поддерживает это). Таким образом, любой существующий код все еще будет работать, и вы можете постепенно убрать все старые орфографические ошибки из вашей кодовой базы. В конце концов вы можете даже скопировать / вставить тело метода в новый метод и удалить старый.
/ Edit Как сказал ivo в комментарии: еще лучше сделать так, чтобы код переместился
TheOldMethodName
вMyNewMethodName
и вызвал новый метод из старого. У этого также было бы преимущество, чтобы помочь разработчику разобраться в том, к чему принадлежит код.источник
Переименование метода:
Это два варианта, на которые вы могли бы пойти. Я бы предпочел автозаполнение (например, Eclipse IDE) и не нужно вводить имя метода. Собираюсь переименовать; просто убедитесь, что вы узнали, что вызывает этот метод, и измените прямые ссылки в каждом месте. Рефакторинг будет вашим другом для этого, но будьте очень осторожны при этом.
источник
Я бы вообще рекомендовал да, переименовать его.
В других ответах здесь перечислены веские причины, по которым вы, возможно, не захотите переименовывать его, поэтому, если вы окажетесь в одной из таких ситуаций, вы можете создать новый метод с правильным именем и реализацией и изменить старый метод для вызова нового метода. , Затем пометьте старый как устаревший, если ваш язык поддерживает его.
источник