Don't make changes to generated clients directly. Make your changes in the generator. Changes to Core, Scripts, and High-Level interfaces are fine directly in the code.
Do not use non-trivial statics anywhere. This will cause custom memory managers to crash in random places.
Use 4 spaces for indents and never use tabs.
No exceptions.... no exceptions. Use the Outcome pattern for returning data if you need to also return an optional error code.
Always think about platform independence. If this is impossible, put a nice abstraction on top of it and use an abstract factory.
Use RAII, Aws::New and Aws::Delete should only appear in constructors and destructors.
Be sure to follow the rule of 5.
Use the C++ 11 standard where possible.
Use UpperCamelCase for custom type names and function names. Use m_* for member variables. Don't use statics. If you must, use UpperCamelCase for static variables
Always be const correct, and be mindful of when you need to support r-values. We don't trust compilers to optimize this uniformly across builds so please be explicit.
Namespace names should be UpperCamelCase. Never put a using namespace statement in a header file unless it is scoped by a class. It is fine to use a using namespace statement in a cpp file.