Декабрь 14, 2005

ВенгерскаяНотация-ЭтоЗло

На днях в программерской конференции swrus-programming разгорелся небольшой спор по поводу использования префиксов при именовании переменных. Так как я являюсь принципиальным противником использования так называемой “венгерской нотации”, а Джоэль Спольски – сторонником (см. “Making Wrong Code Look Wrong”), мне пришлось написать эту заметку, чтобы слегка уравновесить накренившуюся блогосферу :-)

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

szName – строка в стиле C/C++, оканчивающаяся нулем (string zero)
lpstrName – указатель на строку (pointer string)

Далее эту концепцию можно распространить и на другие области, например, немало пользователей Delphi используют обозначения, подобные следующим:

btnOK – кнопка OK (button OK)
frmMain – главная форма (main form)

С одной стороны – удобно. Смотрим на переменную, и сразу “считываем” различную вспомогательную информацию. С другой стороны – а нужна ли она нам на самом деле? Сторонники нотации утверждают, что просто необходима. Здравый смысл и некоторый опыт говорят, что в 99% случав – нет. Мое мнение еще более принципиально: венгерская нотация – это зло.

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

NameZeroString, NamePointer, OKButton, MainForm

Не правда ли – гораздо “читабельнее” и понятнее даже непосвященному? Так предадим же всех “абдурахман-ибн-хоттабычей” в именах наших любимых переменных забвению!

Возвращаясь к упомянутой выше статье Джоэля, в которой он приводит пример, убеждающий нас использовать префикс “s” для безопасных строк (safe) и “us” для небезопасных (unsafe), хочу задать риторический вопрос – если на каждый такой чих программиста придумывать новый префикс – кто в дальнейшем сможет разобраться в получившемся коде? Чем больше кода мы напишем, тем более запутанной будет выглядеть система префиксов – до тех пор, пока в документации не появится специальный талмуд, объясняющий правила и нюансы превращения стройных мыслей в дебри строк, напичканных “венгерской лапшой” :-)


Похожие записи

Супер Идея как фетиш
Выбор AJAX-фреймворка для построения RIA-приложений
Халявные книжки от nigma.ru




Комментарии [9] - на пост “Халявные книжки от nigma.ru”

  1. Smart

    Йа заказл книгу по моделированию бизнес-процессов. Стоит >800 р.
    Уже неделю назад.

    Вроде болеру.ру прислал письмо что заказ отгружен.

  2. Juda

    Hi,
    На самом деле болеро – оф. партнер рекламной программы. Мне на данный момент пока не приходил отлуп за 477р книгу :) вдруг прокатит

    Dmitry Emelyanov AKA Juda

  3. Второй Московский Бомж

    А мне ничего не пришло от них. Книжку заказал, в ответ – ни ответа, ни привета. Значит судьба – не так уж и хотелось изучить PHP :) ))))))))

  4. Anton Gladcheko

    Да, мне, увы, тоже ничего не пришло

  5. Алекс Маслов

    Я люблю только аудио книги , а то лень читать просто

  6. путин

    Вот побольше бы такого!!!

  7. Сергей Гоцуляк

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

  8. ВАВИЛОВ МихаилКонстантинович

    Уважаемому г-ну АШМАНОВу и г-ну ГОЦУЛЯК (простите, не знаю, склоняется ли Ваша красивая фамилия). Когда-то я общался с гением ПЕЛЕВИНым, лично. Он порадовал меня, сказав, что собирается в монастырь. Думаю, ещё не время … Но читая бизнес-роман не мог избавиться от ощущения, будто в руках у меня – вечный “Принц Госплана”. Как свежо, “как алы были розы”. Обязательно, прочитав более 25 % – звякну ПАСЫНКОВу Игорю Григорьевичу. Жаль + Феликсу Владимировичу ШИРОКОВу не смогу. Ещё пока звонить ТУДА не тороплюсь … Кремниевая Долина и US, и ex-SU поставили перед нами сегодня задачи нашей Совести. А жанр “Щастья” в cyber-space всё-таки довольно быстро потребует решения Задачи Души каждого: “Адекватная реакция на Сеть”. И только Авангард грядущего антихриста, то есть вы – специалисты в области “программизма”, по-прежнему способны ещё пока осознать, куда вы привели, к какой духовной бездне. Впервые эти вопросы мы пытались поставит и обсуждать ещё на Первом Международном Компьютерном Фестивале, в Улан-Удэ. Далай-лама там увидел большой ЖК-экран и радовался, как дитё. Сегодня и завтра только те, кто с радостью читают удивительно живую работу г-на АШМАНОВа, способны понять – ЧТО я имею ввиду … Г-н ГОЦУЛЯК, спасибо за “Цифровую Нервную Систему Небо-Сети” (хотелось бы ознакомиться с Вашими суждениями о глобальных тенденциях выноса Soft’а в Сеть). Мои суждения про SkyDNS – в следующий раз. С искренним уважением и с чувством благодарности, референт архиепископа. Москва.

  9. Anton Beauvais

    Excellent weblog right here! Also your web site quite a bit up fast! What web host are you the usage of? Can I get your affiliate hyperlink on your host? I desire my web site loaded up as quickly as yours lol

Ваше мнение?