IDEAL CHALK 助记符缩写和助记符图像用于面向对象原则






4.93/5 (19投票s)
IDEAL CHALK 助记符缩写和助记符图像用于面向对象原则
引言
本文的目的是提供助记首字母缩略词、助记图像和标语,以便于记忆除了 SOLID 面向对象原则之外的面向对象原则。
由 Robert C Martin 引入的 SOLID 面向对象原则广为人知,并且易于以 SOLID 的首字母缩略词形式记忆。对这些原则的轻松记忆将有助于并提示程序员在编程中应用这些原则。除了 SOLID 原则,还有其他一些原则在面向对象编程中也同样重要。如果将这些原则以首字母缩略词的形式呈现,程序员将更容易记忆和在编程中应用这些原则。经过一段时间的尝试,我为这些原则创建了如下所示的首字母缩略词
![]() | INI | 面向接口编程,而不是面向实现编程 |
![]() | DRY | 不要重复自己 |
![]() | EWV | 封装变化 |
![]() | ANC | 依赖抽象,而不是具体类 |
![]() | LKP | 最少知识原则 |
![]() | COI | 优先使用组合而非继承 |
![]() | HOP | 好莱坞原则 |
![]() | ADP | 尽可能应用设计模式 |
![]() | LCS | 努力实现松耦合系统 |
![]() | KISS | 保持简单和清晰 / 愚蠢 |
此外,通过连接这些原则的关键词,形成了一个句子,如下所示
接口不重复封装的抽象,对好莱坞原则的组合知之甚少,松散地采纳以保持简单。
由于这些原则是对 SOLID 原则的补充,我们可以说,使用 IDEAL CHALK 编写 SOLID 面向对象程序。人脑擅长记忆图像而非文字。古语有云:“一图胜千言”。我为每个面向对象原则都创建了一个助记图像。
INI - 面向接口编程,而不是面向实现编程
DRY - 不要重复自己
EWV - 封装变化
ANC - 依赖抽象,而不是具体类
LKP - 最少知识原则
COI - 优先使用组合而非继承
HOP - 好莱坞原则
ADP - 尽可能应用设计模式
LCS - 努力实现松耦合系统
KISS - 保持简单和清晰 / 愚蠢
以下是 OO 大师与程序员之间的对话
OO 大师 | 你好!程序员。 使用面向接口而非实现 (INI)原则,并面向 IView 编程,以便我们可以将其用于桌面 (Windows Forms) 应用程序和 Web Forms 应用程序。面向 IView 编程,以便我们可以将其用于桌面 (Windows Forms) 应用程序和 Web Forms 应用程序。思考要做什么,而不是谁来做。 |
程序员 | 好的。不要重复自己。 |
OO 大师 | 很好。你提到了下一个 OO 原则。不要重复自己 (DRY)。修改只应在程序中的一个地方进行。它应该反映在其他地方。 |
程序员 | 是这样吗!谢谢。我也会遵循的。 |
OO 大师 | 我看到你把土豆和西红柿混在一起了。烂西红柿弄坏了土豆。在面向对象编程中也可能出现类似情况。这时就使用封装变化 (EWV)原则。不要让西红柿弄坏土豆。 |
程序员 | 这听起来很合理,您的观点我完全接受。 我一直在等我预订的车,到现在还没来。我必须出门了。 |
OO 大师 | 我得知汽车目前没有。只有货车可用。这就是为什么我们要依赖抽象而非具体类 (ANC)。如果你订的是四轮车,那么你可能会得到货车。要通用,不要具体。 |
程序员 | 我明白了。现在我订四轮车,以后我会注意的。 |
OO 大师 | 你很善于接受。顺便说一下,你的车到了。 当你外出时,要和朋友交谈,而不是陌生人。这是另一个面向对象原则,叫做最少知识原则 (LKP)。 |
程序员 | 谢谢你的建议。我很快就回来。在我回来之前,你能帮我把房间里的模拟时钟换成数字时钟吗? |
OO 大师 | 好的。我会的。 |
程序员 | 我房间的墙为什么要重建? |
OO 大师 | 你把模拟时钟嵌入到墙里了。因此,为了换成数字时钟,墙正在重建。如果模拟时钟是挂起来的,那么替换成数字时钟就会很容易。预见到这些复杂性,OO 资深人士建议,优先组合而非继承 (COI)。 |
程序员 | 我现在实际理解了它,它将成为我编程词汇的一部分。 请把你的手机给我,我想给我的老板打电话。 |
OO 大师 | 嘿,别给你老板打电话。你不知道好莱坞原则 (HOP)吗,别打电话给我们,我们会打电话给你的。 |
程序员 | 好好好。那我继续发明轮子,去造汽车。 |
OO 大师 | 你说什么?发明轮子!拜托!不要重复造轮子。使用现有的轮子来发明汽车。在面向对象编程中也是如此,应用设计模式 (ADP),它们是针对常见编程任务的成熟方法。你手里拿着什么? |
程序员 | 我试图把 1 到 9 的数字放到这个魔方的每个面上。花了很多时间,但没有成功。 |
OO 大师 | 在魔方中,所有带数字的小方块都紧密耦合。因此,你面临着问题。尝试松耦合系统 (LCS)。不要纠缠不清。把每个面都看作是带数字 1 到 9 的平面。 |
程序员 | 你用这么多 OO 原则唤醒了我。这么多东西怎么记住和应用呢。 |
OO 大师 | 是啊!好问题。记住我们的对话和每个原则的首字母缩略词,在编程时观察哪个 OO 原则被违反了。如果不能完全应用该原则,不要担心。这些是原则,不是法律。法律是必须遵守的严格规则,而原则是指导方针,可以根据需要遵循。
但是,在驾驶时,这些步骤会自动发生。同样,可以彻底研究 15 条 OO 原则(5 条 SOLID 和 10 条 IDEAL CHALK),以便在进行面向对象编程时自然地应用它们。 |
程序员 | 这次谈话给了我信心。 |
OO 大师 | 好的。最后别忘了 KISS。 |
程序员 | KISS! |
OO 大师 | 这是一个面向对象原则,叫做保持简单和愚蠢 (KISS)。不要拐弯抹角。直截了当。 |
程序员 | 非常感谢您的启发性指导。 |