Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.92
bumbaram
47 / 47 / 1
Регистрация: 13.02.2012
Сообщений: 176
#1

Венгерская нотация, оно вообще надо? - C++

22.01.2013, 16:54. Просмотров 3278. Ответов 24
Метки нет (Все метки)

Вопрос в заголовке. Больше всего смущает префикс m_ для приватных членов класса, ни информативности на красоты, а печатать дольше. Общее мнение рудимент или хороший стиль?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
01.02.2013, 23:11     Венгерская нотация, оно вообще надо? #21
Цитата Сообщение от MrGluck Посмотреть сообщение
тем, что не является буквой и не коверкает запись, ассоциацию. Например было isPrint (переменная, отвечающая надо ли выводить на печать объект) стало m_isPrint - опечаткой. Была руда ore, стала m_ore - "больше".
Да ладно вам, с моей точки зрения аргументы притянуты за уши. Если бы не было нижнего подчёркивания - был бы полностью с вами согласен. Однако оно есть, и это кардинально меняет картину.
Однако никому своё мнение на навязываю, естественно. Кто как хочет - тот так и пишет. Главное - следовать корпоративным стандартам кодирования - и всё будет замечательно!
Dmitriy_M
1340 / 1221 / 111
Регистрация: 20.03.2009
Сообщений: 4,375
Записей в блоге: 11
02.02.2013, 14:37     Венгерская нотация, оно вообще надо? #22
Цитата Сообщение от hinst Посмотреть сообщение
так всё и есть, только я про смену типа, а не про смену имени переменной.
Пример давай. Тип переменной от каста не меняется.
Цитата Сообщение от hinst Посмотреть сообщение
this->
усложняет чтение.

Цитата Сообщение от MrGluck Посмотреть сообщение
тем, что не является буквой и не коверкает запись, ассоциацию. Например было isPrint (переменная, отвечающая надо ли выводить на печать объект) стало m_isPrint - опечаткой. Была руда ore, стала m_ore - "больше".
Не аргумент. Если не используются символы _, для разделения слов(signal_number), то m_ ассоциируется как method.
В случает с m_ore и more, это в какой конвенции можно спутать?

Цитата Сообщение от silent_1991 Посмотреть сообщение
Главное - следовать корпоративным стандартам кодирования - и всё будет замечательно!
Нужно придерживаться одного стиля внутри проекта. Особенно актуально в OpenSource проектах.
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
02.02.2013, 15:01     Венгерская нотация, оно вообще надо? #23
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
m_ ассоциируется как method
member всё-таки...
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Нужно придерживаться одного стиля внутри проекта.
А это как-то опровергает моё высказывание?
XRuZzz
Антикодер
649 / 550 / 27
Регистрация: 15.09.2012
Сообщений: 2,497
07.02.2013, 10:12     Венгерская нотация, оно вообще надо? #24
сокращенные суффиксы и префиксы вытесняют (как бы занимают ваше внимание) осмысленные названия сущностей.
Чем короче и понятнее название переменной или атрибута класса тем лучше.
Пример
C++
1
Dates dateOfBirth;
из названия ясно, что речь идёт о дате, уже можно примерно догадываться о типе.
Или другой пример например атрибут класса Dates
C++
1
2
3
4
5
6
7
8
class Dates
{
    public:
       ...
       void setDay(int);
       int getDay();
    private:
       int day;
попробуем то же самое сделать с помощью венгерской нотации

C++
1
2
3
4
5
6
7
8
class СDates
{
    public:
       ...
       void setM_iDay(int);                    // ???
       int getM_iDay();                         // ???
    private:
       int m_iDay;
Такой результат может получиться при автоматической генерации сеттеров геттеров с помощью IDE.(ведь код должен быть устойчив к обработке разными IDE)

Другое дело указатели

C++
1
      Dates *pDateOfBirth;
IDE возможно сама узнает префикс p и корректно с генерирует сеттеры и геттеры. Но я их иногда привожу к виду:
setDateOfBirthPointer

Добавлено через 11 минут
в реальности (в Eclipse) получилось так

C++
1
2
3
4
5
6
...
        int getIHouseNumber() const;
        void setIHouseNumber(int iHouseNumber);
    private:
        int m_iHouseNumber;
...
но мне даже буква I в сеттерах геттерах не нужна.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2013, 10:22     Венгерская нотация, оно вообще надо?
Еще ссылки по теме:
Обратная польская нотация через структуру C++
C++ Кто как обзывает переменные / типы в своём коде? (нотация)
C++ Для четного введенного числа определить, делится ли оно на 10, для нечетного - делится ли оно на 5
C++ Надо сделать задание (надо найти среднее геометрическое)
C++ с Клавиатуры надо ввести имена 5 человек , надо найти сколько гласных букв в каждом имени человека

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
07.02.2013, 10:22     Венгерская нотация, оно вообще надо? #25
Джоэль как-то уже плакался на эту тему (rooskie). Что люди нихрена не понимают, что такое настоящая венгерская нотация.
Yandex
Объявления
07.02.2013, 10:22     Венгерская нотация, оно вообще надо?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru