Mostly, just follow the regular style guide, but:
api/code is not exempt from the “
.ccfiles come in pairs” rule, so if you declare something in
api/path/to/foo.h, it should be defined in
api/should, if possible, not
api/. It’s not always possible to avoid this, but be aware that it adds to a small mountain of technical debt that we’re trying to shrink.
api/, on the other hand, are free to
That is, the preferred way for
api/ code to access non-
api/ code is to call it from a
.cc file, so that users of our API headers won’t transitively
#include non-public headers.
For headers in
api/ that need to refer to non-public types, forward declarations are often a lesser evil than including non-public header files. The usual rules still apply, though.
.cc files in
api/ should preferably be kept reasonably small. If a substantial implementation is needed, consider putting it with our non-public code, and just call it from the