Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2013, 18:12   #1
revizor
Форумчанин
 
Аватар для revizor
 
Регистрация: 20.01.2013
Сообщений: 146
По умолчанию Выбор названий переменных в классах

Как выбирать названия для аргументов конструктора и для закрытых переменных?

Можно использовать знак подчеркивания, но мне этот способ не очень нравиться.

Код:
class DateAndTime
{
public:
	DateAndTime(short hour=0, short minute=0, short second=0,
				short day=1, short month=1, short year=2000);
				
private:
	short hour_;
	short minute_;
	short second_;

	short day_;
	short month_;
	short year_;
};
Я сначала хотел в конструкторе для каждого аргумента по одной букве использовать, но слова "минута" и "месяц" начинаются на одну и ту же букву.
revizor вне форума Ответить с цитированием
Старый 22.01.2013, 18:20   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Я обычно начинаю члены класса с m_ (и глобальные переменные с g_). Среди прочего, помогает среде разработки делать правильные подсказки, а разработчику (мне) не спутать нечаянно переменные с сильно разным временем жизни.
Abstraction вне форума Ответить с цитированием
Старый 22.01.2013, 18:43   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,372
По умолчанию

К вышесказаннаму добавлю mozilla проповедают добавление префикса a к именам переменных аргументов:
void CSomeClass::SomeMethod(int aValue)
waleri вне форума Ответить с цитированием
Старый 22.01.2013, 19:05   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
class C
{
    int F;
    C(int F):F(F)
    {};
};
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.01.2013, 20:56   #5
revizor
Форумчанин
 
Аватар для revizor
 
Регистрация: 20.01.2013
Сообщений: 146
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Я обычно начинаю члены класса с m_ (и глобальные переменные с g_).
Это же Венгерская нотация. Сейчас читаю про нее в Википедии. Очень интересно. Вот ссылка http://ru.wikipedia.org/wiki/%D0%92%...86%D0%B8%D1%8F
revizor вне форума Ответить с цитированием
Старый 22.01.2013, 21:37   #6
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

я добавляю полено в конец имен полей, но префиксы типа m_ кошерней, ага (но мне лень их ставить).

То что Abstraction пишет - ИМХО хорошо, а венгерская нотация целиком - не очень. Посмотри на имена в WinApi, там ты встретишь примерно вот такие префиксы:
Код:
PHKEY phkResult,
    LPDWORD lpdwDisposition
МБ это кому-то и нравится, но не мне
rrrFer вне форума Ответить с цитированием
Старый 22.01.2013, 21:39   #7
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Венгерская нотация - нежелательно использовать.

Вот почему:

Допустим имеется переменная
Код:
int nTest;
n - обозначает что переменная целочисленная.
В процессе разработки программы вы решили поменять тип переменной на double. В этом случае придется изменять имя переменной на dTest, а из этого следует, что придется изменять имя во всех файлах где она используется.

Но сейчас есть такие штуки как "быстрая замена". И впрочем этот недостаток является не значительным.

При том можно указать тип переменной не явно в имени. Например CountVariable - количество переменных (если перевести). Сразу понятно? что раз переменная предназначена для подсчета переменных, то она целочисленная. Не будут же считать количество в переменной типа double или char

А на счет классов я ставлю перед именем префикс my_
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.

Последний раз редактировалось kineziz; 22.01.2013 в 21:42.
kineziz вне форума Ответить с цитированием
Старый 22.01.2013, 21:45   #8
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

revizor

Я сначала хотел в конструкторе для каждого аргумента по одной букве использовать, но слова "минута" и "месяц" начинаются на одну и ту же букву.

на клавиатуре еще есть цифры, например
m1, m2, m10, m27831
Rififi вне форума Ответить с цитированием
Старый 22.01.2013, 21:49   #9
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Цитата:
Я сначала хотел в конструкторе для каждого аргумента по одной букве использовать, но слова "минута" и "месяц" начинаются на одну и ту же букву.
Не желательно использовать такие имена аргументов. Код становится сложнее читать.

Что лучше: m1, m2 или Month,Minute
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Старый 23.01.2013, 14:17   #10
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

С одной стороны, это конечно дело вкуса. Но с другой, как бы не угодить в беду!

http://ideone.com/2E6IZ

Поэтому, я всегда указываю преффиксы:

Код:
int gValue=0; 
struct Example
{
   enum eSetup { eONE = 1 };  

   void Foo(int val);
   void Foo(int aVal);
private:
   static int sMember;
   int mMember;
};
Очень важно не допускать коллизий имен.

Последний раз редактировалось ACE Valery; 23.01.2013 в 15:34.
_Bers вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор названий столбцов Strangers SQL, базы данных 10 29.08.2012 19:18
Имитация ввода названий F5-F8 sunny_alice Паскаль, Turbo Pascal, PascalABC.NET 2 06.10.2011 08:41
изменение названий кнопок Olya1985 Компоненты Delphi 4 20.08.2011 17:34
Сопоставление математическим формулам их названий Ghost_V Помощь студентам 0 17.12.2009 21:55
Совпадение названий программ mutabor Свободное общение 3 25.10.2007 19:40