我被介绍到一个 Objective-C 代码库,它有大约 50,000 个 LoC,我估计 25% 左右是重复代码。不幸的是,到目前为止,代码库中的 OO 原则大多被忽略,而倾向于复制和粘贴逻辑。耶!
我来自 Java 背景,很多这种重复可以通过老式的面向目标的编程来修复。在很多情况下,将共享逻辑提取到基类中感觉像是正确的解决方案。
然而,在我着手创建一堆基类并在派生类之间共享公共逻辑之前,我想我应该停下来看看是否还有其他可用的选项。从 2011 年开始观看 Ken Kocienda 的“Writing Easy-To-Change Code”WWDC 会议后,他建议我尽可能保持对象层次结构的浅层。他没有提供任何关于他为什么有这种观点的确切统计数据,所以我想知道我是否错过了一些东西。
无论如何,我都不是Objective-C专家,所以我想知道在决定对象层次结构时是否有任何最佳实践。基本上,当您决定停止创建基类并开始使用组合而不是继承作为在类之间共享代码的一种方式时,我想获得意见。
此外,从运行时性能的角度来看,有什么可以让我远离创建对象层次结构吗?