“There’s a good part of Computer Science that’s like magic.
Unfortunately there’s a bad part of Computer Science that’s like religion.”
― Hal Abelson
OOP / OOAD is intrinsically tied to an object’s life cycle.
One can distinguish between two life cycles
a creates b
a uses b
a closes b
This facilitates layered Architecture.
Model View Controller
Domain Application Service
This is OK till you need Workflow Processing (Checkout).
A typical Workflow spans more than 2 disjointed or concurrent steps.
Also, building a new layer is a long process.
An object sent n-levels down may gives rise to
It is a major pain to debug.
Another problem is two-way, or even one-way communication with previous levels.
Legacy code is sprinkled with using exceptions as one-way communication.
Design patterns hide the problems.
A company X and a priest Y will announce a Framework Z.
After 5 years the company will ditch Z and use W.
You did not use OOAD DDD DI MVC MVP MVVM ABC properly.
Raw Material -> A Real Factory
-> Assembly Line
-> Split Raw Materials
-> Make Parts Concurrently
-> Quality Check
-> Package Product
An Engineering Product stands for itself.
Only Game Programmers come close to this.
The irony is, Assembly Programmers used these techniques.
Assembly Programmers dealt with primitive indestructible values
Device part is where (Flat) OOP is a great fit.
(infact a file interface is all you need)
Storage Management part is where OOP is OK.
Memory <-> Process part is where OOP fails.
This can be solved by Data Process Patterns
Used in Real Factory Controllers.
The Game Programming way.
Used in domains like Avionics, Electronics Softwares.
XML / Unix
Used in Telecommunications, WhatsAPP.
Inevitably, in “Enterprises”.
Drupal. Yes Drupal.
It is pointless to talk of MVC-smalltalk without smalltalk.
smalltalk has a very elegant and actor-like object communication model.
Simula had it. Why on earth this was wasn’t included in C++ baffles me.
If you want to be a Software Engineer
Use OOP, if you have to, for low level layers
Don’t fall into SP, OOP, OOAD, DDD, FP or any religion
There is a huge creativity here, doing this efficiently.
Don’t let the framework rob this from you.
A Lot of programmers have built complex reliable Systems without
without OOAD or FP in tiny teams.
Consider the screenplay for Schindlers list. It has ~~ 6k lines, written
by one guy probably.
A 16kb total-scripts-size can be a good upper limit for a single programmer.
Pick new Data Process pattern and make it your own.
The point is, you can do Engineering and it’s not that difficult.
$ cat log.txt | grep foo | wc -l
You already use engineered components that work together, everyday.