Вопрос по стилю именования классов
От: navrocky  
Дата: 04.12.09 12:13
Оценка:
Раньше пользовался qt-подобным стилем именования, то есть имя типа всегда с большой буквы, имена методов — слова слитно первое слово с маленькой буквы.

Например:
class Message
{
public:
    Message(Level level, ...);
    Level level() {return level_;}
private:
    Level level_;


Теперь, вот хочу освоить стиль именования std/boost. Но сразу бросается большой минус — часто хочется назвать get-метод по имени типа.

class message
{
public:
    Message(level level, ...);
    level level() {return level_;}
private:
    level level_;


В общем, я теперь мучаюсь с именованием параметров и методов. И не видно где тип, а где переменная или имя метода.

Что делать? Кто что посоветует?
Re: Вопрос по стилю именования классов
От: Alexander G Украина  
Дата: 04.12.09 12:31
Оценка:
Здравствуйте, navrocky, Вы писали:

N>В общем, я теперь мучаюсь с именованием параметров и методов. И не видно где тип, а где переменная или имя метода.


Это фича стиля. Различаются только шаблонные параметры/макро/всё-остальное.

N>Что делать? Кто что посоветует?


Типы, которые будут часто совпадать с другими идентификаторами используют с суффиксом _t, например size_t.

Кстати, в Delphi идентификаторы регистронезависимы, и таки проблем со стилем нет. Просто все типы с префиксом T, дата-мемберы с префиксом F, интерфейсы с префиксом I.
Русский военный корабль идёт ко дну!
Re[2]: Вопрос по стилю именования классов
От: navrocky  
Дата: 04.12.09 12:39
Оценка:
Здравствуйте, Alexander G, Вы писали:

N>>Что делать? Кто что посоветует?


AG>Типы, которые будут часто совпадать с другими идентификаторами используют с суффиксом _t, например size_t.


А насколько это будет красиво, если я все классы назову с суффиксом _t ? Или надо выдумывать какой-то критерий частоты совпадения... Тоже как-то решение не айс.

AG>Кстати, в Delphi идентификаторы регистронезависимы, и таки проблем со стилем нет. Просто все типы с префиксом T, дата-мемберы с префиксом F, интерфейсы с префиксом I.


Это я знаю, насиделся...
Re[3]: Вопрос по стилю именования классов
От: Alexander G Украина  
Дата: 04.12.09 12:53
Оценка:
Здравствуйте, navrocky, Вы писали:

N>А насколько это будет красиво, если я все классы назову с суффиксом _t ? Или надо выдумывать какой-то критерий частоты совпадения... Тоже как-то решение не айс.


В STL каждый раз по-своему
Классфункция
binder1stbind1st
back_insert_iteratorback_inserter
mem_fun_t mem_fun
pair make_pair
Не айс, согласен.

Нормальное решение: все классы — существительные, все фунции — глаголы (или содержат глаголы). Отсюда следует, что у геттеров таки нужен get. empty из STL, которое прилагательное — бесит, надо было is_empty.
Русский военный корабль идёт ко дну!
Re[4]: Вопрос по стилю именования классов
От: Roman Odaisky Украина  
Дата: 04.12.09 13:10
Оценка: 1 (1)
Здравствуйте, Alexander G, Вы писали:

AG>empty из STL, которое прилагательное — бесит, надо было is_empty.


Надо было has_items. empty само по себе отрицание, if(!empty) запутывает. (А кое-где бывает даже if(!nonempty) { ... } else { ??? }. :-)
До последнего не верил в пирамиду Лебедева.
Re[4]: Вопрос по стилю именования классов
От: navrocky  
Дата: 04.12.09 13:23
Оценка:
Здравствуйте, Alexander G, Вы писали:

AG>Нормальное решение: все классы — существительные, все фунции — глаголы (или содержат глаголы). Отсюда следует, что у геттеров таки нужен get. empty из STL, которое прилагательное — бесит, надо было is_empty.


Угу, я тоже к этому пришел — единственный не кривой способ. Только, конечно, ломает писать везде get_ и исходники это захламляет...
Re: Вопрос по стилю именования классов
От: HolyNick  
Дата: 05.12.09 15:03
Оценка:
НЕ парь себе мозг: назови GetLevel(...) или просто Get, если класс небольшой и больше Get-ов не предвидится. Или можно несколько Get(параметры) с разными параметрами(если они есть)...в этом и есть полезность "перегрузки"(по-моему так это называется функций.
Re[2]: Вопрос по стилю именования классов
От: navrocky  
Дата: 06.12.09 09:46
Оценка:
Здравствуйте, HolyNick, Вы писали:

HN>НЕ парь себе мозг: назови GetLevel(...) или просто Get, если класс небольшой и больше Get-ов не предвидится. Или можно несколько Get(параметры) с разными параметрами(если они есть)...в этом и есть полезность "перегрузки"(по-моему так это называется функций.


То что в первом посте — это не вся моя задача %) у меня будет намного больше классов и они будут посложнее. Поэтому сейчас хочется прибиться к какому-нибудь правильному стилю, чтобы потом не заниматься рефакторингом.

От qt-стиля отталкивает то, что это не стандарт, и свистопляска с регистром. А в остальном — очень удобно.
Re: Вопрос по стилю именования классов
От: GamerOne Россия  
Дата: 06.12.09 10:43
Оценка: +1
Саттер с Александреску в своих 101 советах рекомендуют:

Don't overlegislate naming, but do use a consistent naming convention: There are only two must-dos: a) never use "underhanded names," ones that begin with an underscore or that contain a double underscore; and b) always use ONLY_UPPERCASE_NAMES for macros and never think about writing a macro that is a common word or abbreviation (including common template parameters, such as T and U; writing #define T anything is extremely disruptive). Otherwise, do use consistent and meaningful names and follow a file's or module's convention. (If you can't decide on your own naming convention, try this one: Name classes, functions, and enums LikeThis; name variables likeThis; name private member variables likeThis_; and name macros LIKE_THIS.)

Я только члены класса именую m_likeThis, а в остальном следую написанному.
Re[3]: Вопрос по стилю именования классов
От: HolyNick  
Дата: 06.12.09 15:59
Оценка:
Ну, в общем-то мой пост универсален, для любого количества классов. Используй большие и малые буквы в названиях функций — GetLevel.
По-моему мнению маленькие буквы и подчеркивания — неудачный вариант и приедается быстро для глаз...все(имена функций, переменных) становится монотонно-одноообразным и неудобным для восприятия.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.