-
Functional Programming Practice
- Using pure function
- Use Functional Domain Modelling:
- Interface for defining the domain model
- Methods on it are pure function that receives the domain model instance then return the brand new updating instance of it
- Using Monad structure for modelling exception, async task, and nullable value
-
Domain Driven Design + Hexagon Architecture
-
Event Driven Programming
-> For handling the task that includes many consituent tasks that are failable -> For making some important process extensible by having event listeners listening on the status of process and doing their own tasks