La programmation orientée objet est une trÚs mauvaise idée qui ne peut surgir qu'en Californie.
- Edsger Weebe Dijkstra
C'est peut-ĂȘtre juste mon sentiment, mais
la programmation orientĂ©e objet semble ĂȘtre le paradigme de conception de logiciel standard et le plus courant. C'est lui qui est gĂ©nĂ©ralement enseignĂ© aux Ă©tudiants, expliquĂ© dans des didacticiels en ligne et, pour une raison quelconque, appliquĂ© spontanĂ©ment mĂȘme lorsqu'ils n'allaient pas le faire.
Je sais Ă quel point elle est attirante et Ă quel point cette idĂ©e semble merveilleuse Ă premiĂšre vue. Il m'a fallu de nombreuses annĂ©es pour dĂ©truire son sort, et maintenant je comprends Ă quel point elle est terrible et pourquoi. GrĂące Ă ce point de vue, je suis convaincu que les gens devraient ĂȘtre conscients de l'erreur de la POO et connaĂźtre les solutions qui peuvent ĂȘtre utilisĂ©es Ă la place.
Beaucoup de gens ont déjà discuté des problÚmes de POO, et à la fin de cet article, je listerai mes articles et vidéos préférés. Mais d'abord, je veux partager mon propre point de vue.
Les données sont plus importantes que le 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, «-» .
, â . , / . , :