Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Названия классов и типов, Стандарт оформления кода, типа... :) 
:(
    Опции темы
Piphon
Дата 20.10.2010, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 30.3.2004
Где: Екатеринбург

Репутация: нет
Всего: 2



В проекте принята примерно такой стандарт именования  классов и типов:
  •  ClassName - Класс, структура
  •  IPureVirtualClassName - виртуальный класс
Но в большинстве случаев эти имена используются только в реализациях своих методов и местах где создаются объекты этих классов (не полностью вирутальных):
Код

void ClassName::someMethod()
{

}

а в других местах используются типы являющиеся "умными" ссылками на них (В голову сразу лезут boost::shared_ptr и boost::weak_ptr). Писать код вроде этого:
Код

boost::shared_ptr<ProjectEntry> projectEntry;
boost::weak_ptr<ProjectEntry> projectEntry;

устанешь, да и с моей точки зрения в объявлениях членов классов это выглядит не слишком красиво(особенно если используются вложенные пространства имен). Вот тут на помощь приходит typedef. Все бы хорошо, но встает вопрос как именовать эти типы:
  • ClassName - исходный класс
  • ClassNameShared | ClassNameRef - ссылка на объект класс
  • ClassNameWeak - слабая ссылка
или использовать венгерскую нотацию (примерно так):
  • SClassName - исходный класс
  • RClassName - ссылка на объект класс
  • WClassName - слабая ссылка
Если встречались с таким вопросом поделитесь опытом. а если нет предложите свои варианты.

P.S. Если в орфографии ошибки, перевод с языка ??? прошел не много не удачно.
--------------------
Non Progredi Est Regredi...
PM MAIL ICQ   Вверх
Леопольд
Дата 20.10.2010, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 10
Всего: 13



Цитата(Piphon @  20.10.2010,  12:01 Найти цитируемый пост)
Если встречались с таким вопросом поделитесь опытом. а если нет предложите свои варианты.
Дело вкуса и личных предпочтений...



--------------------
вопросов больше чем ответов
PM MAIL   Вверх
azesmcar
Дата 20.10.2010, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Какая разница как называть? главное, чтобы понятно было читающему и придерживаться одного стиля (хотя бы в рамках одного проекта).
Я предпочитаю так
Код

class X
{
public:
    typedef boost::shared_ptr<X> shared_ptr;
    typedef boost::weak_ptr<X> weak_ptr;
};

X::shared_ptr x = ...


PM   Вверх
djamshud
Дата 20.10.2010, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



Мой код-стайл:

Код

class classNameIface; - (pure) virtual
class className;
typedef className typedef_t;
className var_name, varname;
struct structName;
struct structName var_name,varname;



--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Sartorius
Дата 20.10.2010, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 8
Всего: 37



Piphon, почитай "Чистый Код" Роберта Мартина. ИМХО там довольно толково описано как выбирать идентификаторы и почему не нужно использовать префиксы вроде венгерской нотации. 
PM MAIL ICQ   Вверх
Piphon
Дата 20.10.2010, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 30.3.2004
Где: Екатеринбург

Репутация: нет
Всего: 2



Леопольд, да это дело вкуса, но зато есть из чего выбирать smile.

Sartorius, единственное место где я использую венгерскую нотацию это интерфейсы в PHP и C#, или полностью(не помню точно как они называются) виртуальные классы C++. А книгу еще не встречал, на досуге надо будет почитать.
--------------------
Non Progredi Est Regredi...
PM MAIL ICQ   Вверх
EgorTheBlade
Дата 20.10.2010, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 5.12.2009

Репутация: нет
Всего: -1



AClassName абстрактный класс
В МFC писал CClassName;
еще существуют приставки с названием проектов Например проект для медицины:

medClassName;
В целом это дело вкуса - главное правило чтобы код написаный вами смогли правильно прочитать и понять другие люди.
PM MAIL Skype   Вверх
Леопольд
Дата 20.10.2010, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 10
Всего: 13



Цитата(Piphon @  20.10.2010,  13:31 Найти цитируемый пост)
Леопольд, да это дело вкуса, но зато есть из чего выбирать

NamespaceName

$AbstractType
ConcreteType

m_dataField
functionName

m_privateDataField_
m_protectedDataField_
privateFunctionName_
protectedFunctionName_

aVarible

Это сообщение отредактировал(а) Леопольд - 20.10.2010, 14:40


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
mes
Дата 20.10.2010, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Леопольд @  20.10.2010,  13:27 Найти цитируемый пост)
$AbstractType

что в данном случае означает доллар ?


--------------------
PM MAIL WWW   Вверх
Леопольд
Дата 20.10.2010, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 10
Всего: 13



Цитата(mes @  20.10.2010,  14:35 Найти цитируемый пост)
что в данном случае означает доллар ? 

Просто ANSI символ, g++ компиляет без проблем, студия, вроде, тоже нормально "проглатывала". Пытаюсь найти в стандарте 2003 допустимые символы в именах С++, пока не нашёл...

Это сообщение отредактировал(а) Леопольд - 20.10.2010, 14:41


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
mes
Дата 20.10.2010, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Леопольд @  20.10.2010,  13:38 Найти цитируемый пост)
просто ANSI символ, g++ компиляет без проблем. 

Цитата

The basic source character set consists of 96 characters: the space character, the control characters representing horizontal tab, vertical tab, form feed, and new-line, plus the following 91 graphical characters:
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9
_ { } [ ] # ( ) < > % : ; . ? * + - / ˆ & | ˜ ! = , \ " ’


Цитата

2.10 Identifiers
nondigit: one of
universal-character-name
_ a b c d e f g h i j k l m
n o p q r s t u v w x y z
A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z
digit: one of
0 1 2 3 4 5 6 7 8 9

 smile

Это сообщение отредактировал(а) mes - 20.10.2010, 14:47


--------------------
PM MAIL WWW   Вверх
Леопольд
Дата 20.10.2010, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 10
Всего: 13



mes, увы... smile 
Тогда 

NamespaceName

IAbstractType
ConcreteType

m_dataField
functionName

m_privateDataField_
m_protectedDataField_
privateFunctionName_
protectedFunctionName_

aVarible


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
mes
Дата 20.10.2010, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Леопольд @  20.10.2010,  13:38 Найти цитируемый пост)
g++ компиляет без проблем,

Цитата

4.25 Знак Доллара в Идентификаторах

В GNU C вы можете использовать знак доллара в идентификаторах. Это потому что многие традиционные реализации C позволяют такие идентификаторы.

На некоторых машинах, знак доллара разрешается в идентификаторах, если вы указываете '-traditional'. В некоторых системах они разрешаются по умолчанию, даже если вы не используете '-traditional'. Но он никогда не позволяется, если вы указываете '-ansi'.

http://www.opennet.ru/docs/RUS/gcc/gcc1-4.html#ss4.25


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0781 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.