Clean Code / Design


  • S - Single-responsiblity principle

    Every module, class or function in a computer program should have responsibility over a single part of that program’s functionality, which it should encapsulate. All of that module, class or function’s services should be narrowly aligned with that responsibility.

  • O - Open-closed principle

    Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification

  • L - Liskov substitution principle

    If S is a subtype of T, then objects of type T may be replaced with objects of type S (i.e. an object of type T may be substituted with any object of a subtype S) without altering any of the desirable properties of the program.

  • I - Interface segregation principle

    Clients should not be forced to depend upon interfaces that they do not use.

  • D - Dependency Inversion Principle

    High level modules should not depend upon low-level modules. Both should depend upon abstractions.