#c #class #format
#c #класс #форматирование
Вопрос:
Является ли это общепринятым в качестве правильного форматирования для классов C ? Я видел так много разных форматов для того, как кодировать классы, пытаясь их изучить. Мне просто интересно, каков стандартный или «обычный» способ сделать это.
class Circle
{
private:
double radius;
public:
Circle()
{
radius = 0.0;
}
Circle(double r)
{
radius = r;
}
// MEMBER
void setRadius(double r)
{
radius = r;
}
double getArea()
{
return 3.14159 * radius * radius;
}
};
Комментарии:
1. Не существует единого стандартного способа форматирования кода на C (или в большинстве других языков, если на то пошло). Существует множество способов форматирования кода на C ; единственными важными правилами являются (а) убедитесь, что код читаем и (б) убедитесь, что ваше форматирование является последовательным.
2. И он должен соответствовать остальной части кодовой базы, в которой вы работаете, какой бы глупой она ни была.
3. Если он компилируется правильно, то в значительной степени это правильная форма.
Ответ №1:
Это вопрос вкуса и последовательности. Существует множество способов форматирования не только классов, но и всех частей кода в целом. Важно то, что код доступен для чтения всем, кто участвует в вашем проекте, и соответствует основным рекомендациям в вашей группе / на рабочем месте / что угодно.
Ответ №2:
Обычно я бы помещал элементы внизу:
class Circle {
public:
Circle() {
radius = 0.0;
}
Circle(double r) {
radius = r;
}
void setRadius(double r) {
radius = r;
}
double getArea() {
return 3.14159 * radius * radius;
}
private:
double radius;
};
Комментарии:
1. В большинстве мест (но, конечно, не во всех) открывающие фигурные скобки определений классов и функций также будут помещены в отдельную строку (как это сделал он, но вы этого не сделали).
Ответ №3:
Не существует универсального предпочтительного формата, но то, что вы показываете, вероятно, является наиболее широко принятым. За одним исключением: обычно считается дурным тоном помещать реализации функций в определение класса.
Комментарии:
1. 1, хотя, если вы пишете шаблонный класс, вы должны поместить их туда.
2. @Moo-Juice, вы все равно можете выполнять функции-члены шаблона вне класса, вам просто нужно повторить все имя шаблона, что немного раздражает. Но я делаю это довольно часто, в частности, для шаблонных функций-членов в классе, отличном от шаблона.
Ответ №4:
Не существует стандарта или формата.
Если вы работаете в одиночку, делайте то, что делает его более читаемым для себя — и, конечно, если вы посмотрите на код других людей и скажете: «Эй, это выглядит более читабельным», тогда не стесняйтесь ассимилировать их привычки кодирования в своих собственных.
Если вы работаете в команде, лучше всего следовать некоторым рекомендациям, изложенным командой в целом, чтобы не навлечь на себя гнев старшего программиста, который провел в C на тысячу лет больше, чем вы, и, очевидно, для него отведено место по правую руку от Богакогда он, наконец, истекает. Шутки в сторону, это значительно упрощает задачу, если команда следует рекомендациям.
Это мое личное предпочтение, надеюсь, я не буду опускаться -голоса за предпочтения:
template<class T> // template declaration if required
class myAwesomeClass
{
public:
/*
* Static stuff that is public goes here, oh and any type-definitions that are
* also externally viewable
*/
private:
/*
* All my secret stuff
*/
protected:
/*
* My descendants can be decadent with this stuff, may they revel in the power
*/
public:
/*
* The rest of you guys get this
*/
} // eo class myAwesomeclass, comment to determine the end of the definition
// this can be useful if things are big!
Ответ №5:
Поскольку классы по умолчанию являются частными private:
, ключевое слово после вашего первого {
является излишним. Форматирование, которое я видел больше всего и которое имеет для меня смысл, — это public:
then protected:
then private:
для порядка спецификатора доступа.