Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/27: Рейтинг темы: голосов - 27, средняя оценка - 4.67
47 / 47 / 9
Регистрация: 13.02.2012
Сообщений: 176
1

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

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

Author24 — интернет-сервис помощи студентам
Вопрос в заголовке. Больше всего смущает префикс m_ для приватных членов класса, ни информативности на красоты, а печатать дольше. Общее мнение рудимент или хороший стиль?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.01.2013, 16:54
Ответы с готовыми решениями:

надо помочь лабами........что-то вообще никак...
Тема: «Решение задач обработки строк и символов» №1 В строке заменить все точки «.» на запятые...

прогп работает ,но надо чтлб оно выходило с помощию функций
посмотирите пожалуйста прогп работает ,но надо чтлб оно выходило с помощию функций.Заранее...

Венгерская нотация. А что вы думаете?
Уже который день задумываюсь о надобности использования префиксов. С одной стороны - очень...

Что это вообще такое и зачем оно надо: #include <файл> и using name space std?
Объясните десятикласснице, что такое заголовочные файлы, зачем они нужны? Что такое пространство...

24
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
01.02.2013, 23:11 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от MrGluck Посмотреть сообщение
тем, что не является буквой и не коверкает запись, ассоциацию. Например было isPrint (переменная, отвечающая надо ли выводить на печать объект) стало m_isPrint - опечаткой. Была руда ore, стала m_ore - "больше".
Да ладно вам, с моей точки зрения аргументы притянуты за уши. Если бы не было нижнего подчёркивания - был бы полностью с вами согласен. Однако оно есть, и это кардинально меняет картину.
Однако никому своё мнение на навязываю, естественно. Кто как хочет - тот так и пишет. Главное - следовать корпоративным стандартам кодирования - и всё будет замечательно!
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 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 проектах.
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
02.02.2013, 15:01 23
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
m_ ассоциируется как method
member всё-таки...
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Нужно придерживаться одного стиля внутри проекта.
А это как-то опровергает моё высказывание?
0
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
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 в сеттерах геттерах не нужна.
0
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
07.02.2013, 10:22 25
Джоэль как-то уже плакался на эту тему (rooskie). Что люди нихрена не понимают, что такое настоящая венгерская нотация.
2
07.02.2013, 10:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.02.2013, 10:22
Помогаю со студенческими работами здесь

С самого начала думал что будет как и раньше, просто добавить массив но нет. Теперь оно вообще работать не хочет
Пользователь вводит массив из 5 чисел. Программа находит минимум и максимум этого массива и...

Обьесните преимущество использования Web-сервисов и есть ли оно вообще
Здравствуйте друзья. Web сервисы используют как посредник между базой и клиентским приложеним. ...

Внешняя видеокарта. Есть у кого-то опыт? Стоит ли оно вообще того?
Играю давно, но с концепцией внешней видеокарты знаком недавно. В силу жизненных обстоятельств...

HIS HD 5770 надо ли оно мне?
комп: amd athlon 5600 x2 2,9Ghz ATIradeon HIS hd3870 iceq3TURBO 2 512mb\256bit, 2GB ОЗУ (OCZ sys)...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru