# How to write code in the `api/` directory

Mostly, just follow the regular [style guide](../g3doc/style-guide.md), but:

* Note that `api/` code is not exempt from the “`.h` and `.cc` files come in
  pairs” rule, so if you declare something in `api/path/to/foo.h`, it should be
  defined in `api/path/to/foo.cc`.
* Headers in `api/` should, if possible, not `#include` headers outside `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.
* `.cc` files in `api/`, on the other hand, are free to `#include` headers
  outside `api/`.

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](../g3doc/style-guide.md#forward-declarations) 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 `api/` `.cc` file.
