sufficient enough to understand the purpose or context • One should not have to read the whole code to figure out what a function does or what a class represents or to understand why a variable exists • No need comments
have a single, unambiguous, authoritative representation within a system” • Actually duplication is fine* • Extract part of code that can be reused to a class or function
help us to make decision with our code ◦ Creational pattern ◦ Structural pattern ◦ Behavioral pattern • Understanding system design to prevent tech debt or over engineering ◦ Monolith Design ◦ Domain Driven Design ◦ Microservices ◦ Architectural Pattern
with better approach • Plan and communicate if you are proposing approach that might totally different with current structure • Add unit tests or automated tests if possible • Do pair programming or code review • Done is better than perfect