![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
viktor1301 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 20.7.2006 Репутация: нет Всего: нет |
В Интернете прочитал про Венгерскую нотацию, хорошего и плохого. Хотелось бы узнать мнение опытных программистов. Стоит ли её использовать при программировании на C#?
|
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
По-моему, это дело привычки. Учитывая, что программисты C# в основном не используют венгерскую нотацию, можно последовать их примеру. А можно и не следовать.
З.Ы. венгерскую используют MFC-шники ![]() -------------------- ![]() |
|||
|
||||
Ch0bits |
|
|||
![]() Python Dev. ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2124 Регистрация: 21.2.2005 Где: Казань Репутация: 9 Всего: 62 |
Потому что есть IntelliSence. ![]() |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Именно. Но я иногда ее все же использую, когда есть набор однотипных элементов (например кнопок на форме). Тогда они по алфавиту идут одна за другой ![]() |
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 92 |
Ага. В простом коде иногда использую префиксы n, obj, m_ но только там, где они действительно сильно улучшают восприятие (особенно не люблю m_, но и он иногда помогает) А вот в UI-дизайне постоянно пользуюсь префиксами, обозначающими тип контрола: lbl - Label, tb - TextBox, cb - ComboBox, ch (ck) - CheckBox, btn - Button и т.п. Это сообщение отредактировал(а) Дрон - 1.8.2006, 13:18 -------------------- Да. Именно так. |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Я лично не пользуюсь. Не считаю нужным. ИМХО, она только мешает чтению кода.
|
|||
|
||||
Softaz |
|
|||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: 3 Всего: 16 |
Использую рекомендованные CodeArchitect префиксы имен.
-------------------- Разочарованный в .NET |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Раз уж пишем -- ссылочку можно?
|
|||
|
||||
stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
для полей использую префикс "m_", чтобы с параметрами путаницы не возникало:
public MyObject(string name) { m_name = name; } и это единственная причина. иначе приходится извращаться с придумыванием названий вроде nameArg или nameField. -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
А просто префикса почему не хватает?
P.S. OffTop: Наберите name на русской раскладке. Получится... тфьу (почти тьфу) ![]() |
|||
|
||||
stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
так уж повелось с незапамятных времён. на самом деле, подчёрк плохо читается, маленькая экранная площадь симовла ![]() Добавлено @ 15:30 ..кстати, "m" видимо от слова member (член) произошло. -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
Дрон |
|
||||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 92 |
Я тоже так думаю.
Не... я m_ использую в случае, если есть поле класса, но я не хочу случайно (например, из-за опечатки или забыв что-то) к нему обращаться напрямую, вместо вызова соответствующего аксессора:
-------------------- Да. Именно так. |
||||
|
|||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Дрон, так и у cully ображение к полю идет в конструкторе (Во всяком случае по названию точно конструктор)
|
|||
|
||||
Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: нет Всего: 51 |
Прошу всех интересующихся венгерской нотацией взлянуть на эту статью
![]() Вкратце, эта статья о том, что изначально нотация задумывалась не как средство отображения типов, а скорее как средство для более ясного понимания структуры программы по именам пременных и функций. ![]() |
|||
|
||||
$tatic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 28.1.2005 Репутация: 2 Всего: 22 |
Есть же более удобный способ, я им пользуюсь:
Вот и все. И не надо ни придумывать другие слова, ни использовать всякие _, m_ и прочую гадость. ИМХО она только VBшникам нужна, поскольку у них регистронезависимый код. Это сообщение отредактировал(а) $tatic - 1.10.2006, 12:16 |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Чревато тем, что когда-нибудь забудешь написать this и будешь долго искать почему поле не заполняется ![]() -------------------- ![]() |
|||
|
||||
$tatic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 28.1.2005 Репутация: 2 Всего: 22 |
Ну в принципе можно так же "забыть" и public для метода/конструктора поставить. А в студии this видно, поскольку он синий. Лично у меня написание this.name = name; уже рефлексивно.
|
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
А я не согласен ![]() Очень даже удобно, когда все внутренние члены класса находятся в одном месте. Нажал "_", Ctrl + J (или Ctrl + Пробел) и выбирай нужный тебе ![]() |
|||
|
||||
Goganchic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 678 Регистрация: 18.6.2004 Репутация: нет Всего: 5 |
По мне, так это все дело привычки. Одним людям удобнее использовать венгерскую нотацию, а другим нет, причем бывает так, что и у тех и у других код очень даже читаемый, а если они меняются местами, то все... пиши пропало...
|
|||
|
||||
Exception |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
А мне это не нравится по идеологическим соображениям. Целиком за
|
||||
|
|||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
кстати, вроде, это Кэмел-нотация называется
-------------------- ![]() |
|||
|
||||
Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 3 Всего: 154 |
Microsoft рекомендует использовать смесь вингерской и кэмел-нотации. Где-то на винчестере лежит руководство по оформлению кода в .NET, если найду, выложу.
-------------------- |
|||
|
||||
Marvel |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 31.8.2003 Где: Belarus, Polatsk Репутация: нет Всего: нет |
Для именования используются нотации: Паскаль (каждое логическое слово должно начинаться с заглавной буквы. (TestCounter)) и Камел (первый символ первого логического слова начинается с маленькой буквы, остальные логические слова - с большой. (testCounter)).
Элемент Нотация Примечания класс / структура Паскаль интерфейс Паскаль Начинается с “I” перечисление Паскаль элементы перечисления Паскаль делегаты Паскаль заканчивается “EventHandler” класс исключения Паскаль заканчивается “Exception” методы Паскаль пространство имен Паскаль свойство Паскаль константы Паскаль аргументы Камел переменные внутри методов Камел Поля именуются, используя конвенцию Камел, добавляя символ подчеркивания вначале. (_testCounter) Запрещается использовать венгерскую нотацию (в имени присутствуют префиксы для обозначения типа: string strName). Запрещается использовать постфиксы для этих же целей (enum ColorsEnum). |
|||
|
||||
$tatic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 28.1.2005 Репутация: 2 Всего: 22 |
Интересно, что в Майкрософте символ подчеркивания вроде бы не пишут. По крайней мере в их примерах я такого не встречал.
|
|||
|
||||
mr.DUDA |
|
||||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Хы, у них там вообще чёрт знает что творится. В старых классах юзается m_, в новых - подчёркивание. Есть смешанные примеры:
-------------------- ![]() |
||||
|
|||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
mr.DUDA, а когда M$ следовали собственным guidelines
![]() |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Exception, у них слишком много индусов-программеров, индусов-манагеров, индусов-лидов, за всеми не уследишь
![]() -------------------- ![]() |
|||
|
||||
$tatic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 28.1.2005 Репутация: 2 Всего: 22 |
т.е. это даже не венгерская, а индийская нотация уже
![]() |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
$tatic,
![]() Венгерка устарела. Об этом и тема. А про индусов мы не говорим, у них свои "шахматные" правила ![]() -------------------- ![]() |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Гы, еще одна интересность: private static идет с префиксом s_ |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |