LINUX.ORG.RU
Ответ на: комментарий от AIv

Работать надо а не за соломой бегать;-)

Дык, солома-то, она всегда под рукой - чай, в Расее живём. :)

Вот нафига плодить лишние строчки кода + размазывать тривиальные вещи по двум файлам вместо одного???

В тех немногих проектах, в которых довелось участвовать, количество строчек кода и количество файлов росло столь быстрыми темпами (и тривиальные вещи быстро становились «не совсем тривиальными» и даже «совсем не тривиальными»), что явно было лучше «сразу наплодить», чем потом, чертыхаясь и матерясь, править всё это хозяйство в большой куче файлов.

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

А если инлайн, то вынести ее в отдельный .cpp не выйдет.

а с каких пор .cpp и включённые в него .hpp стали разными единицами трансляции?

jtootf ★★★★★
()

Я когда-то спрашивал Имена переменных/классов/ и т.д.
От себя: пишется быстрее, но если нужно что-то подправить (читать - дописать), идешь в срр файл а там нет метода, лезешь в класс и там находишь, потом или дописывать (уже не одна строчка), а для удобства и перенести.

ymuv ★★★★
()

однострочные в .h

но AStyle считает иначе, это проблема AStyle.

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

Вот нафига плодить лишние строчки кода + размазывать тривиальные вещи по двум файлам вместо одного???

я работаю в проекте с миллионами строк кода в сотнях разных классов. хочется убиват, когда здоровенный хедэр в несколько тысяч строк захламлен имплементациями, превращающими его в нечитабельную дрянь. даже если толстый абстрактный класс реализован абы как (return 0 / return false / etc), но в .cpp файле - всё смотрится аккуратно, не затрудняет навигацию и поиск, не создаёт проблем с дебагом и дописанием функционала без поломок бинарной совместимости. отдельное удовольствие доставляют ситуации, когда бегаешь по коду (в том числе родительских классов) в поисках имплементации, после чего в хедэре обнаруживаешь {} после объявления метода.

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

schizoid

struct LOL { virtual int WUT() = 0 { return 0; } };
int main() { return LOL().WUT; }

А теперь читаем стандарт:

[ Note: A function declaration cannot provide both a pure-specifier and a definition — end note ] [ Example:

struct C {
  virtual void f() = 0 { }; // ill-formed
};
— end example ]

Pavval ★★★★★
()
Ответ на: Не торопись от schizoid

Упс, недочитал.

З.Ы. А вот так разрешается:

class A
{
public:
    virtual int f() = 0;
};

int A::f()
{
   return 1;
}
Pavval ★★★★★
()
Ответ на: комментарий от dikiy

У меня только один вопрос. Ответь, если не трудно и если считаешь нужным.

Сколько файлов, содержащих исходный код, насчитывается в твоём типичном проекте и сколько строк в среднем содержит каждый такой файл?

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

У меня только один вопрос. Ответь, если не трудно и если считаешь нужным.

Сколько файлов, содержащих исходный код, насчитывается в твоём типичном проекте и сколько строк в среднем содержит каждый такой файл?

немного. Я не программист. Из того, что писал сам самый большой был в 15000 строк где-то и 100 файлов. Ну и пару помельче. Строк где-то 1000 и 10 файлов.

Но это не мешает мне разбираться часто в коде других открытых проектов.

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

И ты всегда предпочитаешь 1-й вариант из двух, предложенных в ОП, если я правильно понял?

ну если я потом собираюсь функцию расширять, то есессно нет.

Но в случае типа

int A::get_param_a() { return param_a; }

void A::set_param_a(int value) { param_a=value }

размещать такие функции отдельно не имеет никакого смысла.

Так что ты меня понял правильно.

dikiy ★★☆☆☆
()

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

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

[C++][религия][опрос] однострочные return - в .h или в .cpp?

они (однострочные методы классов) должны находиться в .pas-файлах

Ошибся тредом?

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

Потому, что в паскале всем файлам принято давать расширение .pas, и поэтому, не нарушая соглашение, нельзя положить метод в не-.pas :)

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

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

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