https://medium.com/@hemanthsr/clean-code-principles-and-practices-for-high-quality-software-d4c19bfe1073