私は、約 50,000 の LoC を持つ Objective-C コードベースを紹介されましたが、25% 程度が重複コードであると見積もっています。残念ながら、オブジェクト指向の原則は、コピーと貼り付けのロジックを支持して、コードベースのこの時点までほとんど無視されてきました。わーい!
私はJavaのバックグラウンドから来ており、この重複の多くは古き良き目的指向プログラミングで修正できます。共有ロジックを基本クラスに抽出することは、多くの場合、正しい解決策のように思えます。
ただし、一連の基底クラスを作成して派生クラス間で共通のロジックを共有する前に、立ち止まって、他に利用できるオプションがないかどうかを確認する必要があると考えました。2011 年の Ken Kocienda の「Writing Easy-To-Change Code」WWDC セッションを見た後、彼はオブジェクト階層をできるだけ浅く保つようにアドバイスしています。なぜ彼がこの意見を持っているのかについて、彼は確固たる統計を提供していないので、私は何かを見落としているのではないかと思っています.
私はどう考えても Objective-C の専門家ではないので、オブジェクト階層を決定する際のベスト プラクティスがあるかどうか疑問に思っています。基本的に、基本クラスの作成をやめて、クラス間でコードを共有する方法として継承の代わりに構成を使用することを決定した時期について、意見を求めたいと思います。
また、実行時のパフォーマンスの観点から、オブジェクト階層の作成から私を遠ざけるものはありますか?