In continuation with the clean code series, here I am covering Comments, Formatting, and Objects and data structures.
Comments
- Code should be self-explanatory, the purpose of the code is that humans should be able to understand and not that computer is able to execute it
 - Comment only where logic is complex
 - Private API should not have comments
 - Use comments when you want to caution other developers, for example, why List instead of Queue was chosen and should not be modified
 - Comments should answer why (was a decision made) and not how the code works
 
Formatting
- Formatting is a way to communicate with fellow developers
 - Readability = Maintainability = Extensibility
 - Verticle Alignment: Keep connected functions together for better readability
 - Horizontal Alignment: one should never need to scroll right
 - Team Formatting Rules: everyone should follow the same rules, braces, ident size, spaces/tabs
 
Objects and Data Structures
- Follow OOPS Principles, e.g. parameters and behavior should be encapsulated
 - Law of Demeter:  M method of an object O can only consume services of the following types of objects:
- The object itself, O.
 - The M parameters.
 - Any object created or instantiated by M.
 - Direct components of O.
 
 - Avoid Static methods wherever possible
 
