Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > переменные, константы....


Автор: chaos 5.3.2005, 08:32
здраствуйте!!!!
Возник вопрос как правельно называть переменные, константы и все остальное?
Вот например в яве класс всегда с большой буквы и тд
А как правельно в сях, есть ли какие нибудь правила?

Автор: NiJazz 5.3.2005, 09:39
chaos
Посмотри описания функций и классов в MSDN и все сам поймешь.

Автор: val 5.3.2005, 10:28
Цитата
Посмотри описания функций и классов в MSDN и все сам поймешь.


Не думаю, что это последняя инстанция. Называть надо так, как это принято в команде, в которой ты работаешь... MSDN, тем не менее, тоже демонстрирует хороший стиль...

Автор: Ni@m 5.3.2005, 12:38
Обычно константы пишутся в ВЫСОКОМ РЕГИСТРЕ. слассы начинаются с "С". Каждый логический элемент имени переменной, метода и тд с большой буквы, бывает, что первую делают маленькой(binSortFunc(int *array). Но в общем как хочешь. Как тебе удобней.

Автор: De Gray 5.3.2005, 13:34
Посмотри Требования к оформлению кода на RSDN. Легко запомнить и читаемо большинством как русских, так и иностранных программистов.

Автор: versus 8.3.2005, 13:17
Рекомендую почитать Алена Голуба "Правила программирования" ("Enough Rope to Shoot Yourself in the Foot"):

Цитата

47. Не пользуйтесь именами Microsoft
Это может показаться правилом, специфичным только для Microsoft, но на самом деле это не так (учитывая имеющуюся склонность Microsoft к мировому господству). Любой, кто заботится о переносимости, должен рассчитывать на то, что его или ее программа со временем может или работать под управлением операционной системы Microsoft, или взаимодействовать с библиотекой классов Microsoft. Библиотека MFC, например, перенесена на Macintosh и во многие операционные среды UNIX/Motif на момент написания этой книги, и, вероятно, появится на других операционных системах в ближайшем будущем.

На момент написания этой книги интерфейс прикладного программирования Windows (API) включает в себя около 1200 функций. Библиотека MFC, быстро вытесняющая первоначальный интерфейс на языке Си, добавляет около 80 определений классов. К сожалению, метод Microsoft состоит в добавлении каждый раз дополнительных функций и классов в новую версию компилятора. Если Microsoft случайно выберет в качестве имени для функции или класса то, которое вы используете для каких-то других целей, угадайте, кому из вас придется его сменить?

Так как ни один из идентификаторов Microsoft не соответствует стандарту ANSI Cи, требующему, чтобы имена поставляемых разработчиком объектов начинались с символа подчеркивания, то вы должны предохраняться, избегая использования соглашений по выбору имен в стиле Microsoft:

- Все имена функций Microsoft используют соглашения в стиле Паскаля о СмесиЗаглавныхИСтрочныхБукв(), и они всегда начинаются с заглавной буквы. Я предпочитаю имена только из строчных букв с символами подчеркивания, но что бы вы ни выбрали,НеИспользуйтеСтильMicrosoft(). Функции-члены в классах MFC используют то же самое соглашение.

- Все имена классов Microsoft начинаются с заглавной "С" с последующей заглавной буквой (например, CString, CWnd, CDialog и т.д.). Начальная "С" мало что дает, кроме беспорядка, и ее пропуск удаляет нас от области имен Microsoft.

- Одна из наиболее фундаментальных заповедей объектно-ориентированного проектирования запрещает оставлять незащищенными данные-члены в определении класса. Тем не менее, многие классы MFC имеют открытые поля данных. Все эти поля начинаются с m_, не имеющих другого назначения, кроме как увеличить беспорядок. Тем не менее, мы можем использовать эту бессмыслицу для того, чтобы не начинать имена своих собственных полей с m_ и таким образом легко отличать свои члены от унаследованных из базовых классов MFC.

Автор: bel_nikita 8.3.2005, 14:37
Использовать Венгерскую нотацию smile
http://www.idknet.com/isp/development/delphi/HungarianNotation.htm
http://www.firststeps.ru/mfc/steps/r.php?297
http://www.icsharpcode.net/TechNotes/SharpDevelopCodingStyle.pdf

Автор: Chaos A.D. 8.3.2005, 19:40
Полностью согласен с Аленом Голубом, и в частности с versus. Вот еще отрывок из той же книги :
Цитата

44.1. Не используйте в качестве имен тарабарщину
Отличный образец такого подхода можно наблюдать в любом предлагаемом Microsoft примере программы, хотя эта проблема ни в коем случае не ограничивается корпорацией Microsoft. Все демонстрационные программы Microsoft Windows включают тип переменной в ее имя. Например, объявление типа:
const char *str;
будет сделано следующим образом:
LPCSTR  lpszstr;
Переведите lpszstr как "указатель типа long с именем str на строку, оканчивающуюся 0". На самом деле здесь несколько проблем, не последней из которых является тот факт, что LPCSTR скрывает наше объявление указателя. Тем не менее, обсуждаемое правило посвящается проблеме самого имени.
Этот стиль выбора имен называется "венгерской" записью по названию родины руководителя отдела программирования Microsoft Чарльза Саймони, который его изобрел. (а не потому, что его использование придает программам Microsoft такой вид, как будто они написаны на венгерском языке.)
Венгерская запись целесообразна для языка ассемблера, в котором все, что вы знаете о переменной — это ее размер. Включение информации о типе в имя переменной позволяет вам контролировать правильность ее использования.  Языки более высокого уровня типа Си и Си++ используют для этой цели объявление переменных.
Доктор Саймони несколько раз в печати защищал такой метод записи, но я бы не стал его рекомендовать для программ на Си или Си++. По моему мнению, венгерская запись не дает ничего, кроме ухудшения читаемости программ. Простые str или string значительно легче читаются и содержат ту же информацию. Если вам на самом деле нужно узнать тип, то для этого достаточно вернуться к определению.

Существует и более распространенный, хотя и менее радикальный прием, при котором имена указателей начинают символом p. Эта практика тоже загромождает программу. Вы ведь не начинаете имена целочисленных переменных типа int символом i, переменных типа double — d, а функций — f? Очевидным исключением является случай, когда у вас есть объект и указатель на этот объект в одной и той же области видимости:
char      str[128],    *pstr  =  str;
c другой стороны, для указателя, вероятно, лучше содержательное имя. Сравните:
char    str[128],    *first_nonwhite  =  str;
while ( isspace(*first_nonwhite) )
    ++first_nonwhite;
// В этой ситуации имя *first_nonwhite говорит вам гораздо
// больше о том, что делает переменная, чем предыдущее "*pstr".



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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)