面向对象的编程是一个非常糟糕的主意,只能在加利福尼亚出现。
-Edsger Weebe Dijkstra
也许这只是我的感觉,但是
面向对象的编程似乎是标准的,最常见的软件设计范例。 通常是向学生授课的是他,在在线教程中对他进行了解释,出于某种原因,即使他们不想这样做,也会自发地申请。
我知道她有多吸引人,这个想法似乎浮出水面。 我花了很多年才消灭她的咒语,现在我明白了她有多可怕以及为什么。 由于这一观点,我明确相信人们应该意识到OOP的谬误,并知道可以使用的解决方案。
之前有很多人讨论过OOP问题,在这篇文章的结尾,我将列出我最喜欢的文章和视频。 但是首先,我想分享自己的看法。
数据比代码更重要
. , .
, :
-> ->
. ! , , : , . . , , .
, ,
, . , .
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
, «-» .
, — . , / . , :