Стоит ли помещать много функций в один файл? Или, более или менее, одна функция на файл?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Стоит ли помещать много функций в один файл? Или, более или менее, одна функция на файл?

Сообщение Anonymous »

В идеале мне нужен один класс для каждого файла или, если у меня есть функции, не являющиеся членами, одна функция для каждого файла. Причины следующие:
  • Когда я читаю код, я всегда буду знать, в каком файле я должен найти определенную функцию или класс.
  • Если это один класс или одна функция, не являющаяся членом, на каждый заголовочный файл, то я не буду включать в себя весь беспорядок, когда включаю заголовочный файл.
  • Если я внесу небольшое изменение в функцию, то перекомпилировать придется только эту функцию.
    />
However, splitting everything into many header and implementation files can slow down compilation. Большинство функций обращаются к ряду шаблонных других библиотечных функций, поэтому код будет компилироваться снова и снова, по одному разу для каждого файла реализации. Compiling my whole project takes 45 minutes. Имеется около 50 объектных файлов; каждый из них использует одни и те же дорогостоящие для компиляции заголовки.
Приемлемо ли иметь один класс (или функцию, не являющуюся членом) для каждого файла header, но помещать реализации многих или всех этих функций в один файл реализации, как в следующем примере?

Код: Выделить всё

// foo.h
void foo(int n);

// bar.h
void bar(double d);

// foobar.cpp
#include 
void foo(int n) { std::vector v; ... }
void bar(double d) { std::vector w; ... }
Опять же, преимуществом будет то, что я могу включить только функцию foo или только функцию bar, и компиляция проекта будет быстрее, поскольку foobar.cpp — это один файл, поэтому std::vector (просто пример какой-то другой дорогой в компиляции шаблонной конструкции) должен быть скомпилирован только один раз, а не дважды, если я скомпилировал foo.cpp и bar.cpp отдельно. Конечно, моя причина (3) неприменима для этого сценария: после простого изменения foo(){... мне придется перекомпилировать весь файл foobar.cpp.
Мне интересно ваше мнение!

Подробнее здесь: https://stackoverflow.com/questions/531 ... ion-per-fi
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»