필자는 자신의 코드를 정리하는 것을 좋아하는데 이상적으로 파일 당 하나의 클래스가 필요하거나 비 멤버 함수가있을 때 파일 당 하나의 함수가 필요합니다.많은 기능을 하나의 파일에 넣어야합니까? 또는 파일 당 하나의 기능이 다소 차이가 있습니까?
이유는 다음과 같습니다
내가이 특정 함수 또는 클래스를 찾을해야하는 파일에 난 항상 알 수 코드를 읽을 때. 그 다음 하나의 클래스 또는 1 비회원 헤더 파일 당 기능의 경우
나는 전체적으로 엉망 내가
include
헤더 파일을 포함하지 않습니다.함수에서 작은 변경을하면 해당 함수 만 다시 컴파일해야합니다.
그러나 많은 헤더와 많은 구현 파일로 모든 것을 분할하면 컴파일 속도가 느려질 수 있습니다. 내 프로젝트에서, 대부분의 함수는 특정 수의 템플리트 된 다른 라이브러리 함수에 액세스합니다. 이 코드는 각 구현 파일에 대해 한 번씩 반복해서 컴파일됩니다. 내 전체 프로젝트를 컴파일하는 데 현재 한 대의 컴퓨터에서 45 분 정도 걸립니다. 오브젝트 파일은 약 50 개이며, 각각은 비싸기 쉬운 컴파일 헤더를 사용합니다.
어쩌면, 그것은 헤더 파일 당 하나 개의 클래스 (또는 비 멤버 함수)를 가지고 있지만, 다음 예에서와 같이, 하나 구현 파일에 많은 또는 모든 기능의 구현을 성공시키는 허용? 다시
// foo.h
void foo(int n);
// bar.h
void bar(double d);
// foobar.cpp
#include <vector>
void foo(int n) { std::vector<int> v; ... }
void bar(double d) { std::vector<int> w; ... }
은 장점이다 (나는
foobar.cpp
이
하나 파일이기 때문에 빠를 것이다 전체 프로젝트의 바로 foo는 함수 또는 바로 바 기능, 컴파일을 포함 할 수있을 때문에
std::vector<int>
것 다른 비싼 컴파일 템플리트에 대한 예제는 여기에서 단 한번 컴파일해야합니다.
foo.cpp
과
bar.cpp
을 따로 컴파일해야합니다. 물론 위의 이유 (3)은이 시나리오에서는 유효하지 않습니다. 단지 foo() {...}를 변경 한 후에 잠재적으로 큰 파일
foobar.cpp
전체를 다시 컴파일해야합니다.
귀하의 의견이 궁금합니다.
는 하하, 당신은 호주있어 간단하게하기 위해 여기를 엉망으로! 미국 영어에서는 "좋아"하지 않지만 "사랑합니다". 또한 상황은 대개 "선"또는 "위대한"대신에 "우수"하고 "엄청납니다"! 미국 영어로, 당신이 단지 "무언가를"좋아한다고 말한다면, 당신이 실제로 그것을 좋아하지 않는다는 것을 의미합니다! ;-) – Frank
... "우수"의견에 감사드립니다! :-P – Frank