https://blog.bitsrc.io/best-practices-for-writing-clean-and-maintainable-typescript-code-1cc6a7f029dc