| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > венгерская нотация |
| Автор: viktor1301 1.8.2006, 05:33 |
| В Интернете прочитал про Венгерскую нотацию, хорошего и плохого. Хотелось бы узнать мнение опытных программистов. Стоит ли её использовать при программировании на C#? |
| Автор: mr.DUDA 1.8.2006, 08:39 |
| По-моему, это дело привычки. Учитывая, что программисты C# в основном не используют венгерскую нотацию, можно последовать их примеру. А можно и не следовать. З.Ы. венгерскую используют MFC-шники |
| Автор: Ch0bits 1.8.2006, 10:46 |
Потому что есть IntelliSence. |
| Автор: ivashkanet 1.8.2006, 13:15 |
Именно. Но я иногда ее все же использую, когда есть набор однотипных элементов (например кнопок на форме). Тогда они по алфавиту идут одна за другой |
| Автор: Дрон 1.8.2006, 13:16 |
Ага. В простом коде иногда использую префиксы n, obj, m_ но только там, где они действительно сильно улучшают восприятие (особенно не люблю m_, но и он иногда помогает) А вот в UI-дизайне постоянно пользуюсь префиксами, обозначающими тип контрола: lbl - Label, tb - TextBox, cb - ComboBox, ch (ck) - CheckBox, btn - Button и т.п. |
| Автор: Exception 1.8.2006, 13:44 |
| Я лично не пользуюсь. Не считаю нужным. ИМХО, она только мешает чтению кода. |
| Автор: Softaz 1.8.2006, 14:23 |
| Использую рекомендованные CodeArchitect префиксы имен. |
| Автор: Exception 2.8.2006, 14:27 |
| Раз уж пишем -- ссылочку можно? |
| Автор: stab 2.8.2006, 15:16 |
| для полей использую префикс "m_", чтобы с параметрами путаницы не возникало: public MyObject(string name) { m_name = name; } и это единственная причина. иначе приходится извращаться с придумыванием названий вроде nameArg или nameField. |
| Автор: ivashkanet 2.8.2006, 15:21 | ||
А просто префикса почему не хватает?
P.S. OffTop: Наберите name на русской раскладке. Получится... тфьу (почти тьфу) |
| Автор: stab 2.8.2006, 15:28 |
так уж повелось с незапамятных времён. на самом деле, подчёрк плохо читается, маленькая экранная площадь симовла Добавлено @ 15:30 ..кстати, "m" видимо от слова member (член) произошло. |
| Автор: Дрон 2.8.2006, 15:36 | ||||
Я тоже так думаю.
Не... я m_ использую в случае, если есть поле класса, но я не хочу случайно (например, из-за опечатки или забыв что-то) к нему обращаться напрямую, вместо вызова соответствующего аксессора:
|
| Автор: ivashkanet 2.8.2006, 15:49 |
| Дрон, так и у cully ображение к полю идет в конструкторе (Во всяком случае по названию точно конструктор) |
| Автор: Bose 1.10.2006, 02:25 |
| Прошу всех интересующихся венгерской нотацией взлянуть на эту http://local.joelonsoftware.com/mediawiki/index.php/Как_заставить_неправильный_код_выглядеть_неправильно Вкратце, эта статья о том, что изначально нотация задумывалась не как средство отображения типов, а скорее как средство для более ясного понимания структуры программы по именам пременных и функций. |
| Автор: mr.DUDA 1.10.2006, 12:30 |
Чревато тем, что когда-нибудь забудешь написать this и будешь долго искать почему поле не заполняется |
| Автор: $tatic 1.10.2006, 15:15 |
| Ну в принципе можно так же "забыть" и public для метода/конструктора поставить. А в студии this видно, поскольку он синий. Лично у меня написание this.name = name; уже рефлексивно. |
| Автор: ivashkanet 2.10.2006, 08:21 | ||
А я не согласен Очень даже удобно, когда все внутренние члены класса находятся в одном месте. Нажал "_", Ctrl + J (или Ctrl + Пробел) и выбирай нужный тебе |
| Автор: Goganchic 2.10.2006, 22:17 |
| По мне, так это все дело привычки. Одним людям удобнее использовать венгерскую нотацию, а другим нет, причем бывает так, что и у тех и у других код очень даже читаемый, а если они меняются местами, то все... пиши пропало... |
| Автор: Exception 3.10.2006, 16:28 | ||||
А мне это не нравится по идеологическим соображениям. Целиком за
|
| Автор: mr.DUDA 3.10.2006, 23:16 |
| кстати, вроде, это Кэмел-нотация называется |
| Автор: Medved 5.10.2006, 01:59 |
| Microsoft рекомендует использовать смесь вингерской и кэмел-нотации. Где-то на винчестере лежит руководство по оформлению кода в .NET, если найду, выложу. |
| Автор: Marvel 9.10.2006, 16:16 |
| Для именования используются нотации: Паскаль (каждое логическое слово должно начинаться с заглавной буквы. (TestCounter)) и Камел (первый символ первого логического слова начинается с маленькой буквы, остальные логические слова - с большой. (testCounter)). Элемент Нотация Примечания класс / структура Паскаль интерфейс Паскаль Начинается с “I” перечисление Паскаль элементы перечисления Паскаль делегаты Паскаль заканчивается “EventHandler” класс исключения Паскаль заканчивается “Exception” методы Паскаль пространство имен Паскаль свойство Паскаль константы Паскаль аргументы Камел переменные внутри методов Камел Поля именуются, используя конвенцию Камел, добавляя символ подчеркивания вначале. (_testCounter) Запрещается использовать венгерскую нотацию (в имени присутствуют префиксы для обозначения типа: string strName). Запрещается использовать постфиксы для этих же целей (enum ColorsEnum). |
| Автор: $tatic 10.10.2006, 19:49 |
| Интересно, что в Майкрософте символ подчеркивания вроде бы не пишут. По крайней мере в их примерах я такого не встречал. |
| Автор: mr.DUDA 10.10.2006, 22:53 | ||||
Хы, у них там вообще чёрт знает что творится. В старых классах юзается m_, в новых - подчёркивание. Есть смешанные примеры:
|
| Автор: Exception 11.10.2006, 17:44 |
| mr.DUDA, а когда M$ следовали собственным guidelines |
| Автор: mr.DUDA 11.10.2006, 18:06 |
| Exception, у них слишком много индусов-программеров, индусов-манагеров, индусов-лидов, за всеми не уследишь |
| Автор: $tatic 11.10.2006, 18:14 |
| т.е. это даже не венгерская, а индийская нотация уже |
| Автор: mr.DUDA 11.10.2006, 21:20 |
| $tatic, Венгерка устарела. Об этом и тема. А про индусов мы не говорим, у них свои "шахматные" правила |
| Автор: ivashkanet 12.10.2006, 07:57 |
Гы, еще одна интересность: private static идет с префиксом s_ |