Венгерский в VBA хорошо?
Я не использую венгерские (str, int) префиксы в.Net, но я все еще нахожу это полезным в VBA, где труднее видеть типы.
Это плохо? Ненужные? Может быть, я что-то упустил.
Буду очень признателен за любые отзывы. Я долго думал.
Спасибо всем.
4 ответа
Я всегда использую одно и двухбуквенные префиксы в VBA. Я уверен, что я единственный, кто собирается это признать, но я подумал, что кто-то должен быть противоположным.
Из 18 миллионов строк кода VBA, которые я написал, я сотрудничал примерно с 1000. Если никто не видит мой код, тогда я могу использовать соглашение, которое мне нравится. Если над вашим кодом будет работать кто-то еще, вы должны согласиться на соглашение.
Мне нравится, что это позволяет мне сократить имена переменных. Я мог бы использовать FileNumber и FileName или я мог бы использовать lFile и sFile. Я не нахожу одно более или менее читабельное, чем другое. Это также помогает мне использовать зарезервированные слова в качестве переменных. Если я хочу использовать Replace в качестве имени переменной, я не могу. Но я могу использовать sReplace или lReplace.
Я бы сказал, что этот вид венгерской нотации является корнем всех зол почти на каждом языке. Некоторые люди говорят, что это удобно для чрезвычайно динамичных языков. Но нет, я думаю, что префикс аббревиатуры типа к имени переменной избыточен в 99% всех случаев и просто приводит к уродливому коду.
Я бы посоветовал перейти к чему-то более высокоуровневому, чем просто типы, чтобы вы могли видеть, какова цель вещей. Таким образом, вместо того, чтобы называть что-то str
называть это name
или addr
и вместо int
назовите это count
или coord
inate или...
(Я предпочитаю использовать суффиксы для префиксов, но это вопрос стиля и вкуса.)
Если стиль в вашей компании настроен на использование венгерской нотации, то нет проблем с его использованием - политика - это политика. Существует множество инструментов, которые помогают применять соглашения о присвоении имен кодированию (например, Stylecop для C#), поэтому вы можете двигаться дальше, если вам это позволено.
В основном, наличие стандартов - хорошая идея, но что это за стандарты, зависит от компании, в которой вы работаете. Если у вас есть определенные полномочия, вы можете попытаться навязать стандарты, которые в настоящее время продвигает MS, но если у вас много устаревшего кода, который потребует большого количества дорогостоящего рефакторинга с небольшой материальной выгодой.
Я бы порекомендовал вам отойти от венгерской нотации для новых проектов (возможно, с помощью инструмента анализа кода), но быть прагматичным в отношении унаследованного кода.