В чем привлекательность систем венгерского языка?

В чем привлекательность систем венгерского языка?
В чем привлекательность систем венгерского языка? - markusspiske @ Unsplash

В удаленном вопросе под названием "Каким принципам именования вы следуете? ", автор говорит:

Также я предпочитаю кодировать, используя венгерскую нотацию от Чарльза Симони.

Я сталкивался с несколькими программистами, которые до сих пор предпочитают использовать венгерский язык, в основном венгерский язык Petzold/Systems. Подумайте dwLength = strlen(lpszName).

Я читал Making Wrong Code Look Wrong, и я понимаю смысл Apps Hungarian, где информация о типе домена включена в имена переменных. Но я не понимаю смысла в прикреплении типа компилятора к имени.

Почему программисты до сих пор продолжают использовать этот стиль обозначений? Это просто инерция? Есть ли преимущества, которые перевешивают ухудшение читабельности? Научились ли люди просто игнорировать декораторы при чтении кода, и если да, то как они продолжают приносить пользу?

EDIT: Многие ответы объясняют историю, или почему это больше не актуально, и оба эти вопроса рассматриваются в статье, которую я цитировал.

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

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

  1. Чтобы быть в соответствии с существующей кодовой базой при выполнении обслуживания.
  2. Для управления, например. "txtFirstName". Нам часто нужно различать (скажем) «firstName» значение и «firstName» элемент управления. Венгерский предоставляет удобный способ сделать это. Конечно, я мог бы ввести «firstNameTextBox», но «txtFirstName» так же легко понять и содержит меньше символов. Кроме того, использование венгерского языка означает, что элементы управления одного типа легко найти, и они часто группируются по имени в среде IDE.
  3. Когда две переменные содержат одно и то же значение, но различаются по типу. Например, «strValue» для значения, фактически введенного пользователем, и «intValue» для того же значения после того, как оно было проанализировано как целое число.

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


Обновлять:

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


LetsCodeIt, 23 мая 2023 г., 18:20