LINUX.ORG.RU

С++ гайдлайны по стилю

 


0

4

Ищу толковые гайдлайны по стилю для С++. читал google c++ code style guideline, понравилось, но с некоторыми вещми не согласен. хотелось бы почитать что-нибудь еще из авторитетных источников.

в гугле гуглится всякий шлак :(

особенно интересуют гайды по неймингу

среди команды есть разногласия по некоторым позициям, хочется прийти к консенсусу взяв чей-нибудь авторитеный стандарт



Последнее исправление: staz (всего исправлений: 3)

Так если не согласен, пиши как хочешь. Важно чтоюы на проекте люди писали в одном стиле, вот и все.

Dudraug ★★★★★
()
Ответ на: комментарий от Dudraug

среди команды есть разногласия по некоторым позициям, хочется прийти к консенсусу взять чей-нибудь авторитеный стандарт

пофиксил топик

staz
() автор топика
Ответ на: комментарий от Dudraug

нет такого, увы. у всех довольно маленький опыт в с++, у меня большой опыт в другом языке, но стандарты оттуда мне кажутся вырвиглазными в контексте с++

staz
() автор топика
Ответ на: комментарий от Dudraug

наименование методов классов, SomeMethod || someMethod || some_method

поля классов SomeVariable || someVariable || some_variable || some_variable_

наименование файлов SomeFile || some_file || somefile

расширения файлов .h\.hpp, .cpp\.cc

это самые злободневные

staz
() автор топика
Ответ на: комментарий от staz

Я бы для методов и переменых использовал бы такое someMethod, m_someVariable, для указателей членов или pSomeVariable или m_pSomeVariable. Имена файлов - ТОЛЬКО МАЛЕНЬКИМ регистром, можно с нижним подчеркиванием. cpp/cc по вкусу. .h -имхо для обычных заголовочных файлов, hpp - для волшебных^Wдля содержаших много инлайнов и шаблонов.

Dudraug ★★★★★
()
Ответ на: комментарий от Reset

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

staz
() автор топика
Ответ на: комментарий от staz

Если это define, или enum, то второй или третий вариант в зависимости от ситуации.

Reset ★★★★★
()
Ответ на: комментарий от staz

Нет такого источника, каждый делает как хочет. Например можешь глянуть в сторону «стандартов» офрмления кода в яве. Синтаксис близкий, вполне можно взять на вооружение. А так как на проекте решите так и будет.

Dudraug ★★★★★
()
Ответ на: комментарий от staz

Первый метод емнип для ctags нужен, иначе он нормальный файл тэгов не создаст. Я бы второй использовал в нормальной IDE.

Dudraug ★★★★★
()

Все это частно идеологическое :)

Мне, например, нравится стиль кодинга zeromq, смотрите code style у них на сайте:)

westtrd
()
Ответ на: комментарий от Reset

а пруф в виде фото с бородой и дипломом (или что там у кандидатов) и надписью «привет isden»? :)

Harald ★★★★★
()

У меня со школьных времён сформировался какой-то такой, если кому-то интересно:

#ifndef FOO
#  define FOO
#  define BAR
#endif

typedef int MyType1;

MyType1 my_variable;

template<typename T>
struct MyType2
{
    MyType1 my_field1_;
    T another_field_;
    int myMethod(const T& a, const T& b)
    {
        return my_field1_;
    }
};

void someFunction(int a, int b)
{
    for(int i(0); i<a; ++i)
    {
        
    }
}

template
<
     typename T1
    ,typename T1
    ,typename T3
>
void functionWithLargeNumberOfParameters
(
     int parameter1
    ,int another_parameter
    ,int yet_another_parameter
)
{
}

Все говорят, что ужаснее ничего не видели.

dmfd
()

Все правила по именованию, которые тебе действительно нужны:

  • Классы и типы вообще - с большой буквы.
  • Переменные, методы, объекты - с маленькой.
  • Имена должны быть осмысленными.
schizoid ★★★
()
Ответ на: комментарий от staz

Ё-моё...

Сначала по теме. Гуглил ты плохо. 'c++' style guidelines

'c++' style guidelines site:stackoverflow.com http://stackoverflow.com/questions/283701/c-and-c-coding-standards

'c++' style guidelines site:programmers.stackexchange.com http://programmers.stackexchange.com/questions/4573/what-c-coding-standard-do... etc

От себя выделю: C++ Coding Standards: 101 Rules, Guidelines, and Best Practices (Herb Sutter, Andrei Alexandrescu) Рекомендации лучших собаководов.

Вообще книги желательно читать, там много полезного. Все эти готовые советы по оформлению хороши тому, кто понимает, что он делает. После усвоения Страуструпа и c++ in depth (Sutter & co) уже определённые предпочтения в оформлении появятся. И лихости должно поубавиться. Ты, по-моему, недооцениваешь уровень опасности этого языка, если вместо того, чтобы читать и практиковать, хочешь примерить готовый стиль.

нет такого, увы. у всех довольно маленький опыт в с++, у меня большой опыт в другом языке, но стандарты оттуда мне кажутся вырвиглазными в контексте с++

Не могу удержаться: команда, в которой не-профи (юниоров) по данной тематике больше 10%, скорее смахивает на учебную. Это я к тому, чтобы вы и не думали на что-то серьёзное расчитывать. Пилотные проекты — ваше всё. Пока опыта не наберётесь. Или, если хотите по-настоящему, ищите хотя бы одного, съевшего на C++ и вашей теме уже пуд соли, и пусть набирает новую команду. Та, что есть, не подходит. Ты и сам вопросы неправильные задаёшь: стиль оформления сырцов — дело вторичное, ты об архитектуре приложения думай. Какие задачи на повестке дня, как они будут решаться, скелет решения хотя бы. Будут ли там процессы, потоки, IPC, sockets, сторонние математические/графические/etс библиотеки, нужна ли переносимость на другие платформы, или ну её в баню, etc, etc.

И тогда в определённых случаях кресты использовать можно, если умеючи. Но изучать кресты и всерьёз их использовать в одном проекте — моветон. Кстати, обоснование выбора именно C++ неплохо бы озвучить хотя бы для себя. Может, исходя из задач, вам больше Erlang подойдёт, или, простихоспади, питон. Любимый лоровский язык уже и не предлагаю. :)

Короче: учиться, учиться, и ещё раз учиться.

P.S. Да, кто не знает английского — строем идут в баню, не мучаясь.

anonymous
()

хочется прийти к консенсус

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

взяв чей-нибудь авторитеный стандарт

А вот это уже совсем лишнее.

Во многих хороших книжках читал, что намного важнее, чтобы у команды был стандарт, удобный всем ее членам, чем взятый «авторитетный» стандат, который не нравится многим.

trex6 ★★★★★
()
Ответ на: комментарий от westtrd

Мне, например, нравится стиль кодинга zeromq, смотрите code style у них на сайте

Действительно, неплохо.

pevzi ★★★★★
()

Именовать как в жабе - camelCase. Переменные члены класса с префиксом m_variable. Указатели с префиксом pSomePointer.

invy ★★★★★
()
Ответ на: комментарий от Boy_from_Jungle

усы тоже есть, а пуза и внуков пока нет :)

Reset ★★★★★
()
Ответ на: комментарий от invy

Там тоже неубедительная ерунда. Что переменная является итератором, например, легко понять из контекста, всё остальное элементарно узнаётся с помощью Ctrl+] в vim.

В CUDA венгерская нотация пригождается, поскольку из системы типов нифига не ясно, в каком из типов памяти лежит переменная.

Foo* h_array; // Pointer to host memory.

Foo* g_array; // Pointer to global memory

Foo* s_array; // Pointer to shared memory.

В остальных случаях венгерская нотация ненужна.

dmfd
()
Ответ на: комментарий от dmfd

Согласен про венгерскую нотацию. По сути смысловой hard coding.

anonymous
()
Ответ на: комментарий от dmfd

Идея префиксов не в том что можно нажать ctrl+j, а в том что нажимать не нужно и одного взгляда достаточно чтобы понять что происходит и с какими переменными мы работаем. В С++ допустим обозначать типы (как это делало MS) не нужно - компилятор и IDE умеют за этим хорошо следить. А вот со смыслом переменных несколько сложнее.

invy ★★★★★
()
Ответ на: комментарий от Zorn

Для тебя - венгерская нотация

Не стоит использовать венгерку в языке, в котором и так присутствует информация о типах. Для чистого C ее еще можно хоть как-то за уши притянуть, с его нестрогой типизацией, а для C++ - бред.

m0rph ★★★★★
()
Ответ на: комментарий от anonymous

От себя выделю: C++ Coding Standards: 101 Rules, Guidelines, and Best Practices (Herb Sutter, Andrei Alexandrescu) Рекомендации лучших собаководов.

кажется с прашивал про нейминг, о котором в книге ни слова, или читать не учили в школе?

Не могу удержаться: команда, в которой не-профи (юниоров) по данной тематике больше 10%, скорее смахивает на учебную.

я и не говорил о обратном, учитесь читать тред уже, а?

Пока опыта не наберётесь. Или, если хотите бла бла бла

это все ежу понятно, если еж не студент 2го курса. я же задал конкретный вопрос, и прошу ответа на него, а не 100500 советов от анонимуса

у меня достаточный опыт в программировании, чтобы об этом всем знать, понимать и т.д. и т.п. меня интересует только нейминг в С++, ибо с ним я знаком слабо и то когда-то в институте

staz
() автор топика
Ответ на: комментарий от Zorn

Для тебя - венгерская нотация

вон из моего уютного треда

staz
() автор топика
Ответ на: комментарий от trex6

Во многих хороших книжках читал, что намного важнее, чтобы у команды был стандарт, удобный всем ее членам, чем взятый «авторитетный» стандат, который не нравится многим.

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

staz
() автор топика
Ответ на: комментарий от m0rph

Не стоит использовать венгерку в языке, в котором и так присутствует информация о типах. Для чистого C ее еще можно хоть как-то за уши притянуть, с его нестрогой типизацией, а для C++ - бред.

два чая этому господину

staz
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.