La programación orientada a objetos es una idea extremadamente mala que solo podría surgir en California.
- Edsger Weebe Dijkstra
Quizás esto sea solo mi sensación, pero
la programación orientada a objetos parece ser el paradigma de diseño de software estándar y más común. Es él quien generalmente se enseña a los estudiantes, se explica en tutoriales en línea y, por alguna razón, se aplica espontáneamente incluso cuando no lo iban a hacer.
Sé lo atractiva que es y lo maravillosa que parece ser esta idea en la superficie. Me llevó muchos años destruir su hechizo, y ahora entiendo lo terrible que es y por qué. Gracias a este punto de vista, tengo la clara creencia de que las personas deben ser conscientes de la falacia de la POO y conocer las soluciones que se pueden utilizar en su lugar.
Muchas personas han discutido previamente los problemas de OOP, y al final de esta publicación enumeraré mis artículos y videos favoritos. Pero primero, quiero compartir mi propia opinión.
Los datos son más importantes que el código.
. , .
, :
-> -> . ! , , : , . . , , .
, ,
, . , .
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, «-» .
, — . , / . , :