Skip to content

Learning basic design principles, tech, patterns, templates ...

License

Notifications You must be signed in to change notification settings

21Michael/JS-arch-learning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JS-arch-learning

Learning basic design principles, tech, patterns, templates, data structure...

1) Paradigms:

  • Imperative;
  • Non structured;
  • Structured:
    • Procedural:
      • OOP (class/prototype);
  • Declarative:
    • Functional;
    • Logical;
  • Data-driven;
  • Generic;
  • ...

2) Techniques:

  • Async programming;
  • Parallel programming;
  • Distributed programming;
  • OOP programming:
  • Function programming:
  • Visual programming (ER/RUP/CAD/CAM);
  • Reactive programming:
    • RxJS;
  • Event oriented programming;
  • Functional-reactive programming;
  • Meta-programming;
  • Multyparadigm-programming;
  • ...

3) GOF Design patterns:

  • Fundamental:
    • Delegation;
    • Functional;
    • Immutable interface;
    • Interface;
    • Marker interface;
    • Property container;
    • Event channel;
  • Creational:
  • Behaviour:
    • Chain of responsibility;
    • Command;
    • Interpreter;
    • Iterator;
    • Mediator;
    • Memento;
    • Null Object; *
    • Observer;
    • Servant; *
    • Specification; *
    • State;
    • Strategy;
    • Template method;
    • Visitor;
    • Simple Policy; *
    • Event listener; *
    • Single-serving visitor; *
    • Hierarchical visitor; *
  • Structural:

4) Programming language concepts (OOP):

5) Design Principles:

  • Functional programming principles:
    • Pure Functions;
    • No side effects;
    • Immutability;
    • Referential transparency;
    • Functions as first-class entities;
    • Higher order functions;
    • Disciplined state;
  • OOP programming principles:
    • GRASP:
      1. Информационный эксперт (Information Expert);
      2. Создатель (Creator);
      3. Контроллер (Controller);
      4. Слабое зацепление (Low Coupling);
      5. Высокая связность (High Cohesion);
      6. Полиморфизм (Polymorphism);
      7. Чистое изготовление (Pure Fabrication);
      8. Перенаправление (Indirection);
      9. Устойчивость к изменениям (Protected Variations);
    • SOLID:
      1. Принцип единственной ответственности (single responsibility principle);
      2. Принцип открытости/закрытости (open–closed principle);
      3. Принцип подстановки Лисков (Liskov substitution principle);
      4. Принцип разделения интерфейса (interface segregation principle);
      5. Принцип инверсии зависимостей (dependency inversion principle);
    • DRY (Don’t Repeat Yourself);
    • YAGNI (You aren't gonna need it);
    • KISS (KEEP IT SIMPLE, STUPID);
  • ...

6) Optimization techniques:

7) Data structure:

8) Frameworks:

9) State management patterns:

  1. MVC / MVP / MVVM; ✅
  2. Flux: ✅
  3. Vuex; ✅
  4. MobX; ✅

10) Refs:

11) Books:

  • React Design Patterns and Best Practices (Carlos Santana Roldán);
  • Vue.js 2 Design Patterns and Best Practices (Paul Halliday);