React: initial project setup, structure and architecture

Starting with React is quite easy. You just need to install the npm package and can create your components. However, unlike Angular, React is not providing a whole ecosystem which comes with a architecture and everything necessary like router, module system, components, templates already prepared for immediate start. Angular is a framework, whereas React is a library for creating ui interfaces! This is a huge difference (framework vs. library). In this short article I show an example architecture which you can use, if you don’t know how to structure your app.

Continue reading “React: initial project setup, structure and architecture”

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!”

Article recommendations: decorator pattern vs inheritance|AOP

Starting from Python decorators I wanted to dig deeper what the software engineering community says about decorators and differences to other main concepts. I come up with following recommendations:

Customizable Software Architecture – Approaches overview

  • All in One and feature toggles
    • Challenges: if much customization is needed
  • Branching/Forking of whole product
    • Challenges: merging with main branch in post-delivery
  • Entity-Attribute-Value-Model (EAV) for database as addition
  • Plugin Architecture
    • Challenges: “Points of Customization” (aka Extension Points) in the main product
  • Extension Approach (inheritance)
    • Separation of main product and customer-specific

Continue reading “Customizable Software Architecture – Approaches overview”