Advice from the creator of C++
A Tour of C++
Decide which procedures you want; use the best algorithms you can find.
Decide which modules you want; partition the program so that data is hidden within modules.
IBM Blade Center
Bjarne Stroustrup's homepage
Separate compilation is an issue in all real programs. It is not simply a concern in programs that present facilities, such as a Stack, as modules. Strictly speaking, using separate compilation isn't a language issue; it is an issue of how best to take advantage of a particular language implementation. However, it is of great practical importance. The best approach is to maximize modularity, represent that modularity logically through language features, and then exploit the modularity physically through files for effective separate compilation.