1. Floating Topic
  2. Principles
    1. Loose coupling
      1. Types of coupling
        1. Common coupling
        2. External coupling
        3. Control coupling
        4. Stamp coupling (Data-structured coupling)
        5. Data coupling
        6. Message coupling (low)
        7. No coupling
        8. Content coupling (high)
    2. Cohesion
      1. Types of Cohesion
        1. Coincidental cohesion (worst)
        2. Logical cohesion
        3. Temporal cohesion
        4. Procedural cohesion
        5. Communicational cohesion
        6. Sequential cohesion
        7. Functional cohesion (best)
      2. Principles
        1. Inappropriate Intimacy ( code smell)
        2. Law Of Demeter
        3. Tell, Don't Ask
        4. Say It Once and Only Once
  3. Features or Concepts
    1. Abstraction
    2. Encapsulation
    3. Inheritance
    4. Polymorphism
  4. Software Design
    1. Reliability
    2. Efficiency
    3. Maintainability
    4. Usability
  5. GRASP
    1. Creator (Factory pattern)
    2. Information Expert (Information hiding - abstraction+encapsulation)
      1. Floating Topic
    3. Controller (MVC)
    4. Low Coupling
    5. High Cohesion
    6. Polymorphism
    7. Pure Fabrication
    8. Indirection
    9. Protected Variations
  6. Dieter Rams’ Ten Principles Of Good Design Explained