noone wrote:
> I've got a fella working for me who is trying to convince me to
> change our coding standards to using separate .h and .cc files for
> definitions and implementations. I know this is a perfectly valid
> way of doing things but in my mind it is kind of quirky. Here's why.
>
> The first reason I'd resist deals with the simplicity of makefiles.
> When including most code from headers where classes are protected by
> #ifdef blocks the makefile doesn't have to have a separate build rule
> for each class.
>
> Next, TTBOMK you need to do your classes in header files if you are
> going to make them into generic templates...well, putting them into
> headers isn't strictly a requirement but the other restrictions for
> (templatizable code) would encourage only using headers.
>
> I understand that there a a couple of reasons why you might want
> separate definitions and implementation, such as when a class has a
> static data member, or if you intend to create a shared object
> library of class code, but it seems to me that putting the code into
> the header files is a bit more elegant and the other way would be
> more of a holdover from the old days before templates.
>
> I'm wondering what comments the upper echelon lurkers might have. Do
> they agree with my reasoning, or can they give me reasons why I should
> reevaluate my assertions.
I know of no "upper echelon lurkers", so forgive my barging in, but
I have only one issue to mention: speed of compilation. As soon as
you cross a hundred file barrier (and have a team of more that three
people), you'll probably want to separate your implementation in
a different translation unit for each class so that it could be
independently compiled and not cause recompilation of all other
translation units that include it.
C++ was designed with large scale systems in mind. That's not the
only paradigm it supports, but it's the most important, if you ask me.
If your system is small, no big deal. Keep your headers full of code
and don't bother. We used to do that in Pascal, didn't we? Then
along came units, and suddenly we could split the development into
several relatively independent pieces... You can do it nowadays in
C++ with many modern compilers that support precompiled headers, of
course. But then again, once code changes you need to recompile
most of them again... Kind of PITA.
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask
|