https://medium.com/@info_6303/writing-high-quality-c-code-key-principles-and-essential-tools-47dafacabc28