Architecture, Paradigmas, Design Patterns, Principles, Clean Code

  • Architecture: description of system (structure, relationships, collaboration)
  • Programming Paradigmas: imperative, functional, object-oriented
  • Design Pattern: usually parts of the systems; generic solution design for a problem; an architecture uses many design patterns
  • Programming Principles: SOLID, Law of Demeter, etc.; generic best practices
  • Clean Code: lowest level, actual source code; e.g. code formatting, lines per functions;

Dependency Inversion, Inversion of Control (IoC) and Dependency Injection (DI)

The three keywords from the title Dependency Inversion, Inversion of Control and Dependency Injection are fundamental to be understood by any developer. In this article we will take a close look into them – there are NOT the SAME. At the end, I collected a list of articles recommendations.

Continue reading “Dependency Inversion, Inversion of Control (IoC) and Dependency Injection (DI)”

Flaws in OOP practice: use flat composition and interfaces instead of hierarchical inheritance!

OOP is associated with Inheritance, Encapsulation and Polymorphism. These should enable maintainable and re-usable code. Let’s see how this ends up in practice and what are the solutions, so that you REALLY get maintainable and re-usable code. Based on an interesting and entertaining article on medium by Charles Scalfani. This article is a summary. If you need some explanations and examples you should read the original article.

Continue reading “Flaws in OOP practice: use flat composition and interfaces instead of hierarchical inheritance!”