Меняет ли имя переменной во всей вашей кодовой базе просто запрос на катастрофу? - PullRequest
3 голосов
/ 20 февраля 2009

Допустим, вы решили изменить название переполнения стека на Frack Overflow.

Теперь в вашем коде у вас уже есть десятки объектов, переменных и селекторов с некоторым изменением названия «стек». Вы хотите, чтобы их теперь заменили на «Frack».

Итак, мой вопрос: вы бы предпочли запустить всю свою кодовую базу через фильтр регулярных выражений и изменить все эти имена? Или вы позволите им быть?

Ответы [ 9 ]

9 голосов
/ 20 февраля 2009

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

2 голосов
/ 20 февраля 2009

Это зависит, действительно.

На таком языке, как C ++, вы можете обойтись без этого, потому что компилятор сразу же сообщит вам, если что-то сломается. Тем не менее, другие менее требовательные языки позволят вам ссылаться на переменные, которые не существуют, и худшее, что может случиться, это пощечина на запястье в форме исключения, которое выдается за нулевую ссылку.

Однажды я работал над проектом flex, где кодовая база была настоящим беспорядком, и мы решили пройтись по коду и немного его украсить, чтобы он соответствовал стандартам кодирования Adobe AS3. Поскольку я был новичком в проекте, я не осознавал, что имена переменных в некоторых классах фактически ссылаются на постоянные объекты, которые hibernate (использующий веб-приложение java для внутреннего сервера) использовал для создания отображений. Таким образом, переименование этих переменных привело к неправильной работе всего гибкого интерфейса, даже когда мы делали это с «правильными» инструментами рефакторинга в нашей IDE.

Но на самом деле, я бы сказал, чтобы проверить ваш OCD у двери и вносить изменения постепенно. Каждый раз, когда вы изменяете десятки файлов в большом проекте, вы рискуете дестабилизировать его, и в этом случае выгода от такого риска не окупается.

1 голос
/ 20 февраля 2009

Переименование, пожалуй, самый распространенный рефакторинг . Скорее рекомендуется реорганизовать ваш код по мере необходимости, поскольку это дает вам возможность не принимать постоянные решения об именах, размещении кода и т. Д. При первом написании приложения. Если вы не знакомы с этой идеей, я бы предложил вам начать со страницы Википедии , а затем погрузиться в сайт Мартина Фаулера .

Однако, если вам нужно написать собственное регулярное выражение для переименования, то imho вы могли бы использовать некоторые лучшие инструменты. Не тратьте свое время на то, чтобы заново изобрести колесо, а затем починить то, что случайно сломало ваше новое колесо. Если у вас есть возможность, используйте существующий инструмент (IDE или любой другой), чтобы сделать грязную работу.

Даже если у вас есть «десятки» вещей для переименования, я думаю, вам лучше найти их по одному вручную, а затем использовать автоматическое переименование, чтобы исправить все экземпляры в вашем коде.

1 голос
/ 20 февраля 2009

Если бы я использовал систему контроля версий исходного кода (например, svn, git, bazar, mercurial и т. Д.), Я бы не боялся реорганизовать свой код.

Используйте какой-нибудь метод "найти, заменить все" или рефакторинг какой-то IDE, скомпилируйте (если это не динамический язык) и запустите ваши тесты (если есть).

Если что-то идет не так, вы всегда можете вернуть свой код, используя систему контроля версий.

1 голос
/ 20 февраля 2009

Просто используйте инструмент рефакторинга, такой как Resharper от JetBrains или CodeRush и Refactor! DevExpress. Они автоматически изменяют все ссылки на переменные во всей вашей кодовой базе и могут сделать гораздо больше. Я считаю, что Refactor! даже включен в версию Visual Studio VB. Я использую Resharper и отказываюсь развиваться без него.

1 голос
/ 20 февраля 2009

Если в вашем решении есть объекты, члены и поля с именами, которые ссылаются на конкретную реализацию клиента, я бы усердно работал над их перефакторингом, чтобы использовать вместо него более общие имена, и я бы дал Resharper сделайте переименование, а не какой-нибудь универсальный инструмент поиска и замены текста.

1 голос
/ 20 февраля 2009

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

1 голос
/ 20 февраля 2009

Сначала я задам себе вопрос, почему? Это суждение о риске / вознаграждении в конце дня, которое может сделать только вы.

Я бы очень неохотно сделал это по стилистическим соображениям, но для переклассификации класса это может быть законным.

0 голосов
/ 20 февраля 2009

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

Я бы не стал переименовывать только ради переименования.

...