Подтвердить что ты не робот

Названия функций в С++: заглавные буквы или нет?

Какое соглашение для функций именования в С++?

Я пришел из среды Java, поэтому я обычно называю что-то вроде:

myFunction(...) {
}

Я видел смешанный код в С++,

myFunction(....)
MyFunction(....)
Myfunction(....)

Каков правильный путь?

Кроме того, это то же самое для метода класса, а также для метода, отличного от класса?

4b9b3361

Ответ 1

Не существует "правильного пути". Все они синтаксически правильны, хотя есть некоторые соглашения. Вы можете следовать руководству по стилю Google, хотя есть и другие.

Из упомянутого гида:

Регулярные функции имеют смешанный регистр; методы доступа и мутаторы соответствуют имени переменной: MyExcitingFunction(), MyExcitingMethod(), my_exciting_member_variable(), set_my_exciting_member_variable().

Ответ 2

Начиная с С++ 11, вы можете захотеть использовать snake_case или camelCase для имен функций.

Это связано с тем, что для того, чтобы класс работал в качестве выражения диапазона в цикле for на основе диапазона, для этого класса необходимо определить функции с именем begin и end (чувствительные к регистру).

Следовательно, использование, например, PascalCase для имен функций означает, что вам нужно нарушить согласованность имен в вашем проекте, если вам когда-нибудь понадобится заставить класс работать с диапазоном на основе.

Ответ 3

Большинство кодов, которые я видел, это camelCase функции (строчная начальная буква) и ProperCase/PascalCase имена классов и (большинство обычно), snake_case переменные.

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

Ответ 4

Наиболее распространенные из производственного кода (в этом порядке):

myFunctionName     // lower camel case

MyFunctionName     // upper camel case

my_function_name   // K & R ?

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

например. ex-java-программисты склонны использовать более низкий случай верблюда для функций

Ответ 6

Лично я предпочитаю thisStyle - thisStyle для функций. Это действительно для личного вкуса, возможно, для Java-влияния, но мне очень нравятся функции и классы, чтобы выглядеть по-другому.

Если бы мне пришлось спорить об этом, я бы сказал, что различие несколько больше, чем просто эстетическое. Это экономит немного мысли, когда вы сталкиваетесь с конструкцией временного стиля. Напротив, вы можете утверждать, что на самом деле не имеет значения, является ли Foo(1,2,3) вызовом функции или нет - если это конструктор, то он действует точно так же, как функция, возвращающая Foo по значению в любом случае.

В соглашении также избегается фиаско с функцией-с-тем--и-а-а-а-а-а-а-а, которое наследует С++, поскольку C имеет отдельное пространство имен тегов:

#include <iostream>

struct Bar {
    int a;
    Bar() : a(0) {}
    Bar(int a) : a(a) {}
};

struct Foo {
    Bar b;
};

int Bar() {
    return 23;
}

int main() {
    Foo f;
    f.b = Bar();
    // outputs 23
    std::cout << f.b.a << "\n";
    // This line doesn't compile. The function has hidden the class.
    // Bar b;
}

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

Ответ 7

В отличие от Java, C++ не имеет "стандартного стиля". У довольно большой компании, в которой я когда-либо работал, есть свой собственный стиль кодирования C++, и большинство проектов с открытым исходным кодом также имеют свои собственные стили. Несколько соглашений по кодированию, на которые вы можете посмотреть:

Интересно отметить, что стандарты кодирования C++ часто указывают, какие части языка не использовать. Например, в Руководстве по стилю Google C++ говорится: "Мы не используем исключения C++". Почти везде, где я работал, запрещены определенные части C++. (В одном месте, где я работал, говорилось: "Программа на C, но с new и delete все в порядке"!)

Ответ 8

Я думаю, что это вопрос предпочтения, хотя я предпочитаю myFunction(...)

Ответ 9

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

Кроме того, см. раздел "Вопросы и ответы" Bjarne Stroustrup.

Ответ 10

Делайте, как хотите, до тех пор, пока вы не согласны с вашим разработчиком. группа. каждые несколько лет изменения конвенций... (remmeber nIntVAr)...

Ответ 11

Существует не так много "правильного" способа для языка. Это более личное предпочтение или то, что стандарт для вашей команды. Обычно я использую myFunction(), когда я делаю свой собственный код. Кроме того, стиль, о котором вы не упоминали, что вы часто видите на С++, - my_function() - без заглавных букв, подчеркивание вместо пробелов.

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

Ответ 12

Все зависит от вашего правильного определения. Существует много способов оценить стиль кодирования. Читаемость является важной (для меня). Вот почему я бы использовал способ my_function для написания имен функций и имен переменных.