![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
0x07L |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 10.6.2006 Где: Москва Репутация: нет Всего: 5 |
Я уже несколько раз читал, что венгерская нотация - это плохо. Но как без нее называть переменные-указатели и хендлы? Неужели дописывать к имени переменной Pointer или Handle? И вообще, стоит ли отказываться от венгерской нотации, если за это приходиться расплачиваться необычайной пестротой кода, когда используешь библиотеки типа MFC, располагающие своими собственными правилами именования переменных?
Это сообщение отредактировал(а) 0x07L - 8.7.2006, 09:17 |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
тут есть некоторые мысли о венгерской нотации:
http://www.joelonsoftware.com/articles/Wrong.html раньше там, по-моему, была ссылка на русский перевод, но сейчас что-то не нашёл... -------------------- qqq |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
|
|||
|
||||
0x07L |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 10.6.2006 Где: Москва Репутация: нет Всего: 5 |
Ага, ясно. Плоха не сама венгерская нотация, а ее интерпретация от Micro$oft. Значит, не стоит полностью отказываться от венгерской нотации и можно использовать ее там, где это нужно. Я, как всегда, все не так понял.
А второй вопрос я, пожалуй, уберу. С ним как-нибудь разберусь сам. maxim1000, спасибо за ссылочку. Это сообщение отредактировал(а) 0x07L - 8.7.2006, 09:19 |
|||
|
||||
Farik |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 1.2.2005 Репутация: нет Всего: 1 |
http://local.joelonsoftware.com/mediawiki/...еть_неправильно
Венгерская нотация и есть изобретение одного из работников микрософта. Плоха неправильно понятая венгерская нотация. И как раз на эту плохую венгерку и гонит 90% рунета. Вот собственно документ первоначальный. http://msdn.microsoft.com/library/default..../hunganotat.asp Вобщем лучше чем у Джоела это нигде не описано. |
||||
|
|||||
Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
![]()
WTF! -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
FTTA |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 25.10.2011 Репутация: нет Всего: нет |
И все же, стоит ли использовать Венгерскую нотацию?
|
|||
|
||||
akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
А чёрт её знает..
Насколько я помню, она появилась из-за того, что вдруг появилось в Винде куча классов всего, что надо было запоминать (но что не являлось частью стандарта языка, HWND и прочее, например). Притом, вспомни, какая морока была писать, а ещё паче разбираться, например, на Сшкном APIшнике. Вот сейчас смотрел SumatraPDF и вспомнил, какой это финиш. Насколько я помню, часть венгерской нотации ставила требования к оформлению названий функций, притом, часть из них же относилась к тому, чтобы сначала неявно указывать в названии тип. А сейчас тебе в оболочке тип просто будет показан в той же Студии при наведении. Так что в этом необходимость отпадает. Мир не стоит на месте, что-то остаётся, что-то уходит. Но в своё время венгерка помогла сэкономить определенное количество времени и дать какую-то стандартизацию -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Мне в свое время понравилось одно объяснение, зачем она была изначально придумана (в МС ее несколько видоизменили). Например, ты пишешь вэб приложение. Пользователь вводит на страничке какую-то информацию, а ты на ее основе формируешь запрос. Все мы знаем, что есть такой метод взлома как SQL-injection. Так вот, чтобы не допустить его, необходимо все поступаемые данные от пользователя (unsafe) делать безопасными (safe). А данные поступающие из БД преобразовывать к вменяемому виду. Поэтому, пишется две функции: string safeFromUnsafe(string) и string unsafeFromSafe(string). В итоге, когда ты их используешь то выглядит это так: string safeQuery = safeFromUnsafe(unsafeQuery). Слева от From идут все "safe", а справа "unsafe". Если вдруг, после рефакторинга что-то поменяется, то сразу же бросится в глаза.
А вот так выглядит "привычная" форма: string safeQuery = unsafeToSafe(unsafeQuery). Очевидно, что она менее наглядна и интуитивна. Вот в этом и заключается исходный смысл Венгерской нотации. А не в дописывании приставки обозначающей тип переменной. |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
внеязыковые средства должны прояснять то, что требует пояснения, но языка не хватает
низкоуровневые типы как таковые к этому имхо не относятся |
|||
|
||||
ТарасАтавин |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
0x07L, зачем вообще что то дописывать?
Добавлено через 10 минут и 35 секунд А какое это имеет отношение к венгерской нотации, согласно которой в имя включается информация о типе? Это обычные смысловые имена, отражающие назначение, их к тому же отлично можно заменить на Code/deCode. Добавлено через 13 минут и 15 секунд
-------------------- Не так всё плохо, как оно есть на самом деле. |
||||||
|
|||||||
bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
|
||||
|
|||||
JoKe |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 21.9.2011 Репутация: нет Всего: нет |
не стоит использовать такую нотацию. это вырвиглазие.
|
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
особенно если "сложный" тип |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Ага. Вот например - http://msdn.microsoft.com/en-us/library/aa915440.aspx А теперь представь, что эта структура входит в другую. Представь, как будет выглядеть код:
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |