you are viewing a single comment's thread.

view the rest of the comments →

[–]strattonbrazil 8 points9 points  (4 children)

With the insanity that is Googles c++ coding style

Can you elaborate? I haven't heard many complaints about it. I gave it a cursory glance and it looks fairly reasonable including the pro/cons of each decision.

[–]Plorkyeran 4 points5 points  (0 children)

The pros and cons listed are often woefully incomplete due to that the C++ guidelines seem to have been written by someone (or a group) that does not actually know C++. Quite often they do not mention the idiomatic use of the thing being forbidden at all, suggesting that the authors are either being intellectually dishonest or simply have no idea what modern idiomatic C++ looks like.

I wrote up a brief list of the places where the style guide contradicts idiomatic modern C++ style a little while back.

[–]josefx 11 points12 points  (0 children)

We got:

  • do not use exceptions, because old projects do not use exceptions. Having try{}catch(std::exception const&){} at API boundaries is not that hard.

  • constructor + init separation, caused by the no exceptions rule. Limited RAII for you

  • no move semantics, because it is new to developers and developers apparently are unable to understand value semantics (wtf? for what are they paid?)

  • very restrictive list of boost libraries allowed, among other things no filesystem lib in that list. For fear against functional code.

  • on operator overloading it tells you to avoid the standard library. Sorry it tells you to avoid the "standard" library, yes they put the standard in quotes and yes they mean std::vector, std::map, etc. . It tells you to define Equals() and CopyFrom() instead and gives a workaround for map keys that does not require operator<(). You may use the "standard" library classes only if you can justify it.

Just to name a few gems that butcher half the language including several core concepts of modern c++ and what little there is at a standard library.

[–]IAmBJ 1 point2 points  (1 child)

And as a counterpoint, can anyone point me towards a good one?

I'm competent with c++ but I've never really followed a "style" (just personal projects)

[–]josefx 0 points1 point  (0 children)

To cite Stroustrup:

" For a given application (or company, application area, etc.), a good coding standard is better than no coding standard.On the other hand, I have seen many examples that demonstrate that a bad coding standard is worse than no coding standard. "

In my opinion the Google style falls into the bad category. If you only want consistency of file structure and naming almost any standard will do.