Stack Overflow на русском Asked by timur on August 30, 2021
Изучаю я WinApi и почти все структуры определяются так:
typedef struct tagWNDCLASSEXW {
UINT cbSize;
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCWSTR lpszMenuName;
LPCWSTR lpszClassName;
HICON hIconSm;
} WNDCLASSEXW, *PWNDCLASSEXW, NEAR *NPWNDCLASSEXW, FAR *LPWNDCLASSEXW;
У всех названий полей есть префиксы cb, h, lpsz и т.д.
Используется ли сейчас данный стиль в обычном коде или он устарел?
Это называется венгерской нотацией. Её суть в том, чтобы добавлять префиксы в зависимости от типа или смысла какого-либо имени (переменной/поля/типа/…).
Плюсы:
Минусы:
Succeeded
→ IsSucceeded
, Number
→ Numbers
(массив)).Венгерская нотация достаточно субъективна, чтобы сказать, что её необходимость определяете конкретно вы/ваша команда.
Лично я не использую венгерскую нотацию – использую альтернативу из минуса #3: мне этого вполне хватает. Думаю, можно назвать переменную нормально, чтобы её понимали все и без всяких префиксов (я согласен с актуальностью минуса #1). Т. е. я согласен со всеми (указанными выше) минусами венгерской нотации.
В WinAPI она используется, по причине неактуальности минуса #2: WinAPI писалось давно, и тогда не было современных текстовых редакторов – венгерская нотация стала для разработчиков из Microsoft панацеей. Можно заметить, что в современных разработках от Microsoft венгерская нотация (за редким исключением) не используется. Самый яркий пример, это C# и .NET: минус #2 актуален, а плюс #1 не имеет смысла. Следовательно, если уже говорить о венгерской нотации, то вопрос там (C#, .NET) стоит 1: использовать ли альтернативу из минуса #3 (нужно заметить, что у Microsoft по этому поводу однозначного мнения нет (IAsyncResult.IsCompleted
, Socket.Connected
)).
Correct answer by return on August 30, 2021
У всех по разному, но я расскажу как у нас.
Answered by Aziz Umarov on August 30, 2021
Ответ от Harry:
Чисто вкусовое решение. Если ваша команда приняла то или иное соглашение об именовании - придерживайтесь его. Если программируете в одиночку - решите сами, как вам удобнее, чтобы было в первую очередь понятно.
Answered by jokerbot on August 30, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP