Лучший способ избавиться от венгерской записи?

Вы должны пропустить. Для вашего конкретного случая:

db.person.find().snapshot().forEach(
    function (elem) {
        db.person.update(
            {
                _id: elem._id
            },
            {
                $set: {
                    name: elem.firstname + ' ' + elem.lastname
                }
            }
        );
    }
);
5
задан skaffman 1 June 2011 в 20:01
поделиться

19 ответов

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

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

16
ответ дан 18 December 2019 в 05:11
поделиться

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

-1
ответ дан 18 December 2019 в 05:11
поделиться

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

17
ответ дан 18 December 2019 в 05:11
поделиться

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

С другой стороны, Вы могли выбросить за борт свои переменные в целом и просто иметь каждый функциональный возврат 42.

1
ответ дан 18 December 2019 в 05:11
поделиться

Это звучит мне как большая проблема, то, что Класс объекта Бога с 200 методами. Я предположил бы, что рефакторинг только для удаления Венгерской записи является рискованным действием низкой стоимости в себя. Если нет обильный набор автоматизированных модульных тестов вокруг того класса, чтобы вселить в Вас некоторую веру в Вашем рефакторинге, я думаю, что необходимо оставить его хорошо и действительно один.

Я предполагаю, что маловероятно, что такой набор тестов существует, потому что разработчик, применяющий методы TDD, (надо надеяться), естественно постарался бы не создавать объект бога во-первых - будет очень трудно записать комплексные испытания для.

Устранение объекта бога и получение основы модульного теста на месте имеют более высокую ценность, как бы то ни было. Мой совет состоял бы в том, чтобы искать возможности осуществить рефакторинг сам класс - возможно, когда подходящее бизнес-требование / изменение приходит, который требует изменения в том коде (и таким образом надо надеяться, идет с некоторой системой и регрессионным тестированием, купленным и оплаченным). Вы не смогли выравнивать по ширине усилие по рефакторингу всего этого сразу, но можно сделать это часть частью, поскольку возможность приходит, и тест-драйв изменения. Таким образом можно медленно преобразовывать запутанный код в более чистую кодовую базу со всесторонними модульными тестами, поразрядно.

И можно устранить венгра, когда Вы идете, если Вам нравится.

0
ответ дан 18 December 2019 в 05:11
поделиться

Я соглашаюсь с @Booji - делают это вручную, на основе на стандартную программу, когда Вы уже посещаете код на некотором другом серьезном основании. Затем Вы избавитесь от наиболее распространенных, и кто заботится об остальных.

Я думал о задавании подобного вопроса, только в моем случае, незаконный код является моим собственным. У меня есть очень старая привычка к использованию "плохого вида" венгерского языка с моих дней FoxPro (который имел слабый контроль типов и необычный обзор) — привычка, от которой я только недавно избавился.

Это твердо — это означает принимать непоследовательный стиль в Вашей кодовой базе. Это было только неделю назад, я наконец сказал, "завинчивают его" и начал название параметра без буквы "p". Внутренний конфликт, который я первоначально чувствовал, уступил чувству свободы. Мир не закончился.

1
ответ дан 18 December 2019 в 05:11
поделиться

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

1
ответ дан 18 December 2019 в 05:11
поделиться

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

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

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

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

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

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

1
ответ дан 18 December 2019 в 05:11
поделиться

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

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

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

2
ответ дан 18 December 2019 в 05:11
поделиться

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

2
ответ дан 18 December 2019 в 05:11
поделиться

Я раньше использовал его неукоснительно назад в дни VB6, но остановился, когда VB.NET вышел, потому что это что новые сказанные инструкции VB. Другие разработчики не сделали. Так, у нас есть много старого кода с ним. Когда я делаю обслуживание на коде, я удаляю нотацию из functions/methods/sub, которого я касаюсь. Я не удалил бы все это сразу, если Вы не имеете действительно хорошие модульные тесты на все и можете выполнить их, чтобы доказать, что ничто не повреждается.

2
ответ дан 18 December 2019 в 05:11
поделиться

Только измените его при прямом использовании его. И удостоверьтесь, что у Вас есть испытательный стенд, готовый применяться, чтобы гарантировать, что он все еще работает.

1
ответ дан 18 December 2019 в 05:11
поделиться

Я не сделал бы проект из него. Я использовал бы инструменты рефакторинга в VS (на самом деле, я буду использовать Resharper, но VS работает просто великолепно), и зафиксируйте все переменные в любом методе, который я был призван для изменения. Или если бы я должен был внести изменения более широкого масштаба, то я осуществил бы рефакторинг имена переменной в любом методе, который я был призван для понимания.

1
ответ дан 18 December 2019 в 05:11
поделиться

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

Исходный Charles Simonyi HN, позже известный как венгр Приложения и более позднее отвращение под названием Системный венгр после некоторого peckerhead (это - технический термин) полностью, неправильно читал исходную статью Simonyi.

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

Превосходная статья Read Joel о намерении Венгерской записи исходных приложений и сожалеть о том, что потерялось в порыве.

Если то, что Вы имеете, будет венгром Приложения, то Вы, вероятно, захотите сохранить его после чтения и исходной статьей Charles Simonyi и статьей Joel.

Если Вы приземлились в дымящейся груде Системного венгра?

Все ставки прочь!

Ух! (сказанный при содержании носа) (-:

3
ответ дан 18 December 2019 в 05:11
поделиться

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

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

4
ответ дан 18 December 2019 в 05:11
поделиться

Щелкните правой кнопкой по имени переменной, Осуществите рефакторинг->, Переименовывают.

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

14
ответ дан 18 December 2019 в 05:11
поделиться

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

Однако я согласился бы с Chris Conway к определенной точке зрения и спросил бы Вас ДА ВЕДЬ да, это является раздражающим, но в то же время много времени, "если это aint't повредило done't, фиксирует его" метод, действительно лучший способ пойти!

1
ответ дан 18 December 2019 в 05:11
поделиться

Используйте этот инструмент Java для удаления HN:

Или просто используют "замену" / "заменяют все" regex как ниже для замены "c_strX" к "x": regex to replace HN

0
ответ дан 18 December 2019 в 05:11
поделиться

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

Примеры (идет в vimrc):

"" Hungarian notation conversion helpers
"" get rid of str prefixes and fix caps e.g. strName -> name
map ,bs /\Wstr[A-Z]^Ml3x~
map ,bi /\Wint[A-Z]^Ml3x~
"" little more complex to clean up m_p type class variables
map ,bm /\Wm_p\?[A-Z]^M:.s/\(\W\)m_p\?/\1_/^M/\W_[A-Z]^Mll~
map ,bp /\Wp[A-Z]^Mlx~
0
ответ дан 18 December 2019 в 05:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: