On 2/10/13 00:16 AM, James A. Donald wrote:
On 2013-10-02 05:18, Jerry Leichter wrote:
To be blunt, you have no idea what you're talking about. I worked at
Google until a short time ago; Ben Laurie still does. Both of us have
written, submitted, and reviewed substantial amounts of code in the
Google code base. Do you really want to continue to argue with us
about what the Google Style Guide is actually understood within Google?
The google style guide, among other things, prohibits multiple direct
inheritance and operator overloading, except where stl makes you do
I do similar. I prohibit reflection and serialization in java. In C I
used to prohibit malloc().
Thus it certainly prohibits too-clever code. The only debatable
question is whether protobufs, and much of the rest of the old codebase,
is too-clever code - and it certainly a lot more clever than operator
protobufs I would see as just like any external dependency -- trouble,
and not good for security. Like say an external logger or IPC or crypto
library. It would be really nice to eliminate these things but often
enough one can't.
On the other hand, if you are not so fussed about security, then it is
probably far better to use protobufs to stop the relearning cycle and
reduce the incompatibility bugs across a large group of developers.
Such prohibitions also would prohibit the standard template library,
except that that is also grandfathered in, and prohibits atl and wtl.
The style guide is designed for an average and typical programmer who is
not as smart as the early google programmers. If you prohibit anything
like wtl, you prohibit the best.
Right. Real world is that an org has to call on the talents of a
variety of programmers, high-end *and* aspirational, both. So one tends
to prohibit things that complicate the code for the bulk, and one tends
to encourage tools that assist the majority.
I'd probably encourage things like protobufs for google. They have a
lot of programmers, and that tends to drive the equation more than other
Prohibiting programmers from using multiple inheritance is like the BBC
prohibiting the world "literally" instead of mandating that it be used
correctly. It implies that the BBC does not trust its speakers to
understand the correct use of literally, and google does not trust its
programmers to understand the correct use of multiple direct inheritance.
I often wish I had some form of static multiple inheritance in Java...
The cryptography mailing list