пятница, 3 июня 2011 г.

Венгерская нотация и Силы Зла

LiveLib - социальная сеть читателей книг

Цитата из книги «Джоэл: и снова о программировании»

Джоэл Спольски. «Джоэл: и снова о программировании»

Оригинальную концепцию нотации Симони в Microsoft назвали Apps Hungarian ("венгерской для приложений"), потому что применялась она в отделе приложений (Application Division), который, в частности, разрабатывал Word и Excel. В исходном тексте Excel вы встретите много [префиксов] rw и col, и видя их, сразу поймете, что они относятся к строкам и столбцам. Да, это целые числа, но бессмысленно присваивать значение строки столбцу, и наоборот. В Word, как мне говорили, есть многочисленные [префиксы] xl и xw, где xl означает "горизонтальная координата относительно листа", а xw - "горизонтальная координата относительно окна". Обе переменные целые. Не взаимозаменяемые. В обоих приложениях часто встречается cb, что означает "счетчик байтов". Это счетчик байтов - размер буфера. И если вы видите xl=cb, то это сигнал: очевидно, что код здесь неправильный, потому что полный идиотизм присваивать горизонтальной координате размер буфера.

Нотация Apps Hungarian была чрезвычайно ценна, особенно в эпоху программирования на C, когда компилятор предоставлял не слишком удобную систему типов.

Но затем случилась неприятность.

Силы зла завладели венгерской нотацией.

Никто в точности не знает, но похоже, что это авторы документации из команды Windows неосторожно изобрели то, что стали называть System Hungarian.

Кто-то где-то прочел статью Симони, в которой говорилось о "типе", и решил, что автор имел в виду тип как класс.

В Apps Hungarian были определены очень полезные и содержательные префиксы, такие как ix - для обозначения индекса в массиве, c - для счетчиков, d - для разности и так далее.

В System Hungarian были гораздо менее полезные префиксы, такие как l - для длинного целого, ul - для беззнакового длинного целого.

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

Нотацию System Hungarian распространили; она стала стандартом во всей документации по программированию Windows; её широко рекламировали такие книги, как "Программирование в Windows" Чарльза Петцольда, и она быстро стала доминирующим видом венгерской нотации даже в Microsoft, где только очень немногие программисты помимо разработчиков Word и Excel поняли, какая ошибка была сделана.

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

Пик Великого Бунта совпал с первым выпуском .NET. Microsoft наконец начала говорить, что пользоваться венгерской нотацией не рекомендуется. По этому поводу было много веселья. По-моему они даже не потрудились объяснить причин. Просто открыли раздел руководства, посвященный правилам именования, и написали "Не используйте венгерскую нотацию".

Но в нотации Apps Hungarian все-таки очень много полезного, поскольку [...], что важнее всего, она заставляет неправильный код выглядеть неправильно.

Комментариев нет:

Отправить комментарий