odjhey / teach-code

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Software Engineering

Layered System

  1. Entities
  2. Use-cases
  3. Controllers/Gateways/Presenters
  4. Frameworks and drivers

The Clean Architecture by Uncle Bob

SOLID Principle

  1. Single Responsibility
  2. Open/closed Principle
    Open for extension/closed for modification
  3. Liskov substitution Principle
    TBD - Type inheritance systems
    e.g. Square cannot inherit a rectangle
    Another classic goes, "Looks like a duck, quacks like a duck, but needs batteries, is probably not a duck"
  4. Interface Segregation
    No client should be forced to depend on methods it does not use.
  5. Dependency Inversion
    high level modules should not depend on low level modules; both should depend on abstractions. Abstractions should not depend on details. Details should depend upon abstractions.

About