我被介绍给了一个Objective-C代码库,其中大约有50,000行代码,我估计25%左右是重复的代码。不幸的是,在这段时间里,代码库中大部分都忽略了面向对象的原则,而是选择复制和粘贴逻辑。呀!
我来自Java背景,很多这种重复的问题可以通过良好的面向对象编程来解决。在许多情况下,提取共享逻辑到基类中似乎是正确的解决方案。
但是,在我开始创建一堆基类并在派生类之间共享通用逻辑之前,我认为我应该停下来看看是否有其他可用的选项。在观看Ken Kocienda的2011年WWDC会议上的“编写易于更改的代码”时,他建议我尽可能将对象层次结构保持浅层。他没有提供任何硬性统计数据来支持他的观点,因此我想知道是否有我所不知道的东西。
我并不是Objective-C专家,因此我想知道在决定对象层次结构时是否有任何最佳实践。基本上,我想听听关于何时停止创建基类并开始使用组合而不是继承来共享类之间的代码的意见。
此外,从运行时性能的角度来看,是否有什么可以使我远离创建对象层次结构的因素?
我来自Java背景,很多这种重复的问题可以通过良好的面向对象编程来解决。在许多情况下,提取共享逻辑到基类中似乎是正确的解决方案。
但是,在我开始创建一堆基类并在派生类之间共享通用逻辑之前,我认为我应该停下来看看是否有其他可用的选项。在观看Ken Kocienda的2011年WWDC会议上的“编写易于更改的代码”时,他建议我尽可能将对象层次结构保持浅层。他没有提供任何硬性统计数据来支持他的观点,因此我想知道是否有我所不知道的东西。
我并不是Objective-C专家,因此我想知道在决定对象层次结构时是否有任何最佳实践。基本上,我想听听关于何时停止创建基类并开始使用组合而不是继承来共享类之间的代码的意见。
此外,从运行时性能的角度来看,是否有什么可以使我远离创建对象层次结构的因素?
@protocol
类似于Java中的interface
,而id
则相当于Object
。id <protocol>
类似于Java中实现指定协议(interface)的对象。 - ridobjc_msgSend()
虽然没有太大的开销,但在性能关键的情况下确实可以看出来)。 - rid