Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > указатели и хендлы |
Автор: 0x07L 7.7.2006, 19:55 |
Я уже несколько раз читал, что венгерская нотация - это плохо. Но как без нее называть переменные-указатели и хендлы? Неужели дописывать к имени переменной Pointer или Handle? И вообще, стоит ли отказываться от венгерской нотации, если за это приходиться расплачиваться необычайной пестротой кода, когда используешь библиотеки типа MFC, располагающие своими собственными правилами именования переменных? |
Автор: maxim1000 7.7.2006, 20:29 |
тут есть некоторые мысли о венгерской нотации: http://www.joelonsoftware.com/articles/Wrong.html раньше там, по-моему, была ссылка на русский перевод, но сейчас что-то не нашёл... |
Автор: Fazil6 7.7.2006, 20:29 | ||
|
Автор: 0x07L 8.7.2006, 09:17 |
Ага, ясно. Плоха не сама венгерская нотация, а ее интерпретация от Micro$oft. Значит, не стоит полностью отказываться от венгерской нотации и можно использовать ее там, где это нужно. Я, как всегда, все не так понял. А второй вопрос я, пожалуй, уберу. С ним как-нибудь разберусь сам. maxim1000, спасибо за ссылочку. |
Автор: Farik 26.7.2006, 14:43 | ||||
http://local.joelonsoftware.com/mediawiki/index.php/Как_заставить_неправильный_код_выглядеть_неправильно
Венгерская нотация и есть изобретение одного из работников микрософта. Плоха неправильно понятая венгерская нотация. И как раз на эту плохую венгерку и гонит 90% рунета. Вот собственно документ первоначальный. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs600/html/hunganotat.asp Вобщем лучше чем у Джоела это нигде не описано. |
Автор: FTTA 29.8.2013, 22:26 |
И все же, стоит ли использовать Венгерскую нотацию? |
Автор: akizelokro 3.9.2013, 04:47 |
А чёрт её знает.. Насколько я помню, она появилась из-за того, что вдруг появилось в Винде куча классов всего, что надо было запоминать (но что не являлось частью стандарта языка, HWND и прочее, например). Притом, вспомни, какая морока была писать, а ещё паче разбираться, например, на Сшкном APIшнике. Вот сейчас смотрел SumatraPDF и вспомнил, какой это финиш. Насколько я помню, часть венгерской нотации ставила требования к оформлению названий функций, притом, часть из них же относилась к тому, чтобы сначала неявно указывать в названии тип. А сейчас тебе в оболочке тип просто будет показан в той же Студии при наведении. Так что в этом необходимость отпадает. Мир не стоит на месте, что-то остаётся, что-то уходит. Но в своё время венгерка помогла сэкономить определенное количество времени и дать какую-то стандартизацию |
Автор: bsa 3.9.2013, 10:47 |
Мне в свое время понравилось одно объяснение, зачем она была изначально придумана (в МС ее несколько видоизменили). Например, ты пишешь вэб приложение. Пользователь вводит на страничке какую-то информацию, а ты на ее основе формируешь запрос. Все мы знаем, что есть такой метод взлома как SQL-injection. Так вот, чтобы не допустить его, необходимо все поступаемые данные от пользователя (unsafe) делать безопасными (safe). А данные поступающие из БД преобразовывать к вменяемому виду. Поэтому, пишется две функции: string safeFromUnsafe(string) и string unsafeFromSafe(string). В итоге, когда ты их используешь то выглядит это так: string safeQuery = safeFromUnsafe(unsafeQuery). Слева от From идут все "safe", а справа "unsafe". Если вдруг, после рефакторинга что-то поменяется, то сразу же бросится в глаза. А вот так выглядит "привычная" форма: string safeQuery = unsafeToSafe(unsafeQuery). Очевидно, что она менее наглядна и интуитивна. Вот в этом и заключается исходный смысл Венгерской нотации. А не в дописывании приставки обозначающей тип переменной. |
Автор: baldina 5.9.2013, 12:33 |
внеязыковые средства должны прояснять то, что требует пояснения, но языка не хватает низкоуровневые типы как таковые к этому имхо не относятся |
Автор: ТарасАтавин 7.9.2013, 08:19 | ||||||||
0x07L, зачем вообще что то дописывать?
Добавлено через 10 минут и 35 секунд
Добавлено через 13 минут и 15 секунд
|
Автор: bsa 9.9.2013, 11:39 | ||||
|
Автор: JoKe 10.9.2013, 09:41 |
не стоит использовать такую нотацию. это вырвиглазие. |
Автор: Alca 10.9.2013, 11:51 | ||
особенно если "сложный" тип |
Автор: borisbn 10.9.2013, 18:55 | ||
Ага. Вот например - http://msdn.microsoft.com/en-us/library/aa915440.aspx А теперь представь, что эта структура входит в другую. Представь, как будет выглядеть код:
|
Автор: ТарасАтавин 16.9.2013, 15:29 |
У меня операнды не всегда в экран влазят и ничего ужасного в этом нет. А попытка из принципа избежать таких конструкций гарантирует ужас. |
Автор: baldina 16.9.2013, 17:19 | ||
похоже на пропаганду мазохизма. попытка избежать таких конструкций - нормальный подход, позволяющий сделать код управляемым |