// For all class names, function names, variable names, avoid using abbreviations and use // American English spelling. Exceptions can be made for local variables of limited scope. // Function names should be limited to no more than 4 words combined to form the function name.
// Function names and classes are camel case with first character upper case, eg:
class MyClass;
void MyFunction();
// Member functions are the same. Avoid repeating the class name in the function name, eg:
namespace Vulkan {
class Shader { public: // don't void CreateVulkanShader();
// don't voic CreateShader(); // do voic Create();
};
}
// Parameters to functions should be camel case but start with a lower first character, eg:
void MyFunction(bool enableDebug, const char* resourceFileName);
// Member variables should be prefixed with 'm' or 'm_', eg:
class MyClass { // prefer: int m_count; // or int mCount; // avoid int m_Count; }
// Global variables should be avoided, however prefix with 'g' or 'g_', eg:
// prefer: int g_debugEnabled; // or int gDebugEnabled;
// Local variables shouldn't be camel case, instead split with '_'s, eg:
void MyFunction() { int debug_enabled; }
// defines and macros should be avoided but if used should be all upper case, eg:
#define ARRAY_SIZE(array) std::size(array)
// follow this formatting of the member initialization in constructors
Buffer::Buffer(Device& device, size_t size, int usage) : m_owner(device) , m_size(size) , m_usage(usage) {
// When the line for a function is too long, split it like this
// Change this ImageBuffer::ImageBuffer(Device& device, uint32_t width, uint32_t height, Format imageFormat, uint8_t mipLevels, uint8_t samples) : m_device(device) , m_width(width) // ... { }
// to this:
ImageBuffer::ImageBuffer(Device& device, uint32_t width, uint32_t height, Format imageFormat, uint8_t mipLevels, uint8_t samples) : m_device(device) , m_width(width) // ... { }
// Example of disabling compiler specific warnings
// Visual Studio warnings
#ifdef _MSC_VER
#pragma warning (disable: 4127) // condition expression is constant
#endif
// Example usage of namespace, note the comment on the closing brace
namespace ApplicationFramework {
// Code here
} // ApplicationFramework namespace
// Avoid hardcoded numbers/values inside of code blocks, prefer to move these as const // values at the beginning of file/class/function, eg:
// don't void zoom(float& x, float& y) { x = 2.0f; y = 2.0f; }
// do static const float s_zoomFactor = 2.0f;
void zoom(float& x, float& y) { x = s_zoomFactor; y = s_zoomFactor; }