Objektorientierte Programmierung ist eine äußerst schlechte Idee, die nur in Kalifornien auftauchen kann.
- Edsger Weebe Dijkstra
Vielleicht ist dies nur mein Gefühl, aber
objektorientierte Programmierung scheint das Standardparadigma für das Software-Design zu sein. Er wird normalerweise den Schülern beigebracht, in Online-Tutorials erklärt und aus irgendeinem Grund spontan angewendet, auch wenn sie es nicht tun wollten.
Ich weiß, wie attraktiv sie ist und wie wunderbar diese Idee an der Oberfläche zu sein scheint. Ich habe viele Jahre gebraucht, um ihren Zauber zu zerstören, und jetzt verstehe ich, wie schrecklich sie ist und warum. Dank dieser Sichtweise bin ich der festen Überzeugung, dass die Menschen sich des Irrtums von OOP bewusst sein und die Lösungen kennen sollten, die stattdessen verwendet werden können.
Viele Leute haben zuvor über OOP-Probleme gesprochen, und am Ende dieses Beitrags werde ich meine Lieblingsartikel und -videos auflisten. Aber zuerst möchte ich meine eigene Ansicht teilen.
Daten sind wichtiger als Code
. , .
, :
-> ->
. ! , , : , . . , , .
, ,
, . , .
Customer
?
class Customer
. ?
class RenderingContext
.
«» , , , . . .
, .
, .
FizzBuzz Enterprise Edition — , .
, — . . - , .
, . .
class Customer
class Order
, .
class OrderManager
Order
,
Customer
. , , .
, , , .
- , - , , , .
Context
, - , , - Enterprise.
, . :
class Player
hits()
class Monster
, ?
hp
Monster
attackPower
Player
;
xp
Player
Monster
Monster
.
Player.hits(Monster m)
Monster.isHitBy(Player p)
?
class Weapon
?
isHitBy
Player
currentWeapon()
?
. , , — . , , Enterprise.
:
— , , . .
, , ( ). : , , , , , . : , .
— ,
ADT, . , , , .
, , , API .. «»/«»/«». , (Java/Scala) / . , , , , , .
-
: , — (). .
, , , , , , . , .
- . , , , . .
, , . .
?
, « », , .
. , , , . , : ( , ) ..
, . ,
DataStore
API, . ADT/PoD, ID (, uuid ). :
Vec
HashMap
Index ID, «», , . , LRU .
DataStore
. . : stdin, , trust manager, .. «» , .. «»
DataStore
.
:
DataStore
, .
: , , , , ,
Customer
. :
Customer
—
DataStore
, «-» .
, — . , / . , :