代码之家  ›  专栏  ›  技术社区  ›  nits.kk

不良面向对象设计的特点

  •  1
  • nits.kk  · 技术社区  · 9 年前

    我正在读关于面向对象设计原则的书。我发现了一个糟糕设计的特点。

    1. 很难改变,因为每一次改变都会影响太多其他人 系统的一部分。(刚性)
    2. 当您进行更改时,系统的意外部分会中断。 (易碎性)
    3. 很难在另一个应用程序中重用,因为它不能 与当前应用程序分离。(不动)

    我能理解前两个,但第三个对我来说并不难理解。 它是关于在基类中提取相关类的共同特征,从重复的代码中创建方法吗?但上面写着 hard to reuse in another Application. 通常我们编写特定于上下文的代码 Over-engineering 这不是一个好主意,我们有好的原则 YAGNI (你不需要它)我觉得这些想法有点矛盾。

    请提供您对此的宝贵想法。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Cripto    9 年前

    移动性示例:

    假设以下类别:

    1. 动物
    2. 犬的

    正如你所料, Canine 延伸 Animal Dog 延伸 犬的 .

    不良设计的一种方法 动物 就是给它一个方法 talk() 打印出来的 bark 。也许,本申请的初衷仅针对狗,因此 talk 方法吠叫良好。但在另一个代码库中重用这一点会导致问题。

    说我们想延长 动物 并创建 Bird 。鸟不吠:)

    很难想象有人会这样做。但它总是发生。基类没有被抽象出来,这会导致错误的代码,从而很难纠正/重用。

    有人可能认为 类可以重写 说话 方法然而,另一个开发人员扩展了 动物 因为另一个原因,可能会忘记重写该方法……等等。

    我知道这不是最好的例子,但它证明了问题所在。