Лучший способ избавиться от венгерской нотации? - PullRequest
5 голосов
/ 13 октября 2008

Допустим, вы унаследовали кодовую базу C #, которая использует один класс с 200 статическими методами для обеспечения основных функций (таких как поиск в базе данных). Из многих кошмаров в этом классе есть обильное использование венгерской нотации (плохой вид).

Вы бы реорганизовали имена переменных для удаления венгерской нотации или оставили бы их в покое?

Если вы решили изменить все переменные для удаления венгерской нотации, каким будет ваш метод?

Ответы [ 19 ]

17 голосов
/ 14 октября 2008

Просто оставь это в покое. Есть лучшее использование вашего времени.

16 голосов
/ 14 октября 2008

Refactor - Я считаю, что венгерская запись в таком масштабе действительно мешает естественной читабельности кода, и упражнение - хороший способ познакомиться с тем, что там есть.

Однако, если есть другие члены команды, которые знают кодовую базу, вам потребуется консенсус по рефакторингу, и если какая-либо из переменных будет представлена ​​вне одного проекта, вам придется оставить их в покое.

14 голосов
/ 14 октября 2008

Щелкните правой кнопкой мыши по имени переменной, Refactor -> Rename.

Существуют надстройки VS, которые тоже это делают, но встроенный метод прекрасно работает для меня.

4 голосов
/ 14 октября 2008

Что бы я сделал? Предполагая, что я просто должен поддерживать код, а не переписывать его каким-либо существенным образом? Оставь это в покое. И когда я делаю добавление кода, переходи к существующему стилю, то есть, используй эту уродливую венгерскую нотацию (настолько грязную, насколько это мне кажется).

Но, эй, если у вас действительно есть hankerin 'fer refactorin' , тогда просто делайте понемногу. Каждый раз, когда вы работаете над этим, тратите десять минут на переименование переменных. Немного прибираюсь. Через несколько месяцев может показаться, что он чистый как свисток ...

3 голосов
/ 14 октября 2008

Не забывайте, что существует два вида венгерской нотации.

Оригинальный Чарльз Симони HN, позже известный как венгерский в App, а позднее мерзость, названная System Hungarian после некоторой чепухи (это технический термин), полностью неверно истолковал оригинальная статья Симони .

К сожалению, система HN была распространена Петцольдом и другими, чтобы стать более доминирующим абортом, который по праву признан сегодня.

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

Если у вас есть приложение Венгерский, вы, вероятно, захотите оставить его после прочтения как оригинальной статьи Чарльза Симони, так и статьи Джоэля.

Если вы попали в дымящуюся кучу System Hungarian?

Все ставки сняты!

Уф! (сказал, держа нос) (-:

2 голосов
/ 14 октября 2008

Сколько вы собираетесь сломать, делая это? Это важный вопрос, чтобы задать себе. Если есть много других фрагментов кода, которые используют эту библиотеку, вы можете просто создать работу для людей (возможно, для вас), выполнив упражнение по переименованию.

Я бы включил это в список вещей, которые нужно сделать при рефакторинге. По крайней мере, тогда все ожидают, что вы сломаете библиотеку (временно).

Тем не менее, я полностью разочарован плохо названными методами и переменными, поэтому могу связать.

2 голосов
/ 14 октября 2008

Раньше я использовал его религиозно еще во времена VB6, но прекратил работу, когда вышел VB.NET, потому что так сказано в новых рекомендациях VB. Другие разработчики не сделали. Итак, у нас есть много старого кода с ним. Когда я выполняю обслуживание кода, я удаляю обозначение из функций / методов / суб, к которым я прикасаюсь. Я бы не убрал все это сразу , если бы у вас не было действительно хороших юнит-тестов для всего и я мог бы запустить их, чтобы доказать, что ничего не сломано.

2 голосов
/ 14 октября 2008

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

1 голос
/ 14 октября 2008

Я бы сказал, что большая проблема в том, что у вас есть один класс с 200 (!) Методами!

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

В этом Resharper абсолютно необходим (вы могли бы использовать встроенный рефакторинг, но Resharper намного лучше).

Начните находить группу связанных методов, а затем преобразовать их в симпатичный небольшой связный класс. Обновление в соответствии с вашими последними стандартами кода.

Скомпилируйте и запустите ваш набор тестов.

Есть энергия для большего? Извлечь другой класс.
Изношены - нет проблем; вернись и сделай еще немного завтра. Всего за несколько дней ты покоришь зверя.

1 голос
/ 14 октября 2008

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

...