4

大きなプログラムを作りました。これは私が使用した種類のヘッダーです:

@interface:BGDetailBusinessViewController<UITableViewDataSource,UITableViewDelegate,UITextFieldDelegate,UIScrollViewDelegate,BGDetailFooterViewProtocol,BGDetailPhotoCell,PageControlDelegate,UINavigationControllerDelegate,UIActionSheetDelegate,BGShareSocialDelegate,BGReviewControllerProtocol>

コードの匂いだと思います。その 1 つのファイルBGDetailBusinessViewController.mは、あまりにも多くのことを処理する責任があります。

臭いを取り除く通常のパターンは何ですか?

大きな Objective-C コードのサンプル オープン ソース コードはありますか? そうすれば、プロが非常に大きなプログラムを作成しているときに、プロがどのように作業しているかを確認できます。

4

1 に答える 1

3

その通りです。モデル ビュー コントローラー パターン (MVC) では、コントローラーの役割は、モデルとビューの間の「接着剤」として機能することです。したがって、多くのコードを含める必要はありません。含まれるコードは、ビューとモデルの間の仲介を担当します。

インターフェイス ビルダーを使用している場合、コントローラーに大量のコードが簡単に作成される可能性があります。これを回避することは可能ですが、より複雑な作業にはコードベースのビューを使用することをお勧めします。

  • これらのビューでは、コンポジションを使用する必要があります。UI 要素の再利用可能なコレクションを探し、個別のクラスとして構築します。これらからビューを構築します。
  • ビューとモデルの間でデータをシャントする独自のデリゲート プロトコルを作成します。通常、コントローラーはデリゲートの具体的な実現ですが、それが大きな問題である場合は、別のクラスを使用して、これをビュー コントローラーのメンバーとして提供できます (依存性注入)。
  • オブジェクト指向を使用してリッチ モデルを作成します。
  • 単一の大きなクラスを持つことが本当に理にかなっている場合は、カテゴリを使用して関連する部分をカプセル化します。

特定のケースでは、必要なデータを渡すメソッドを提供するだけで、ビューを UITableViewDelegate およびデータ ソースとして機能させてみませんか? これは、MVC 設計パターンに当てはまります。

于 2013-04-08T08:15:41.253 に答える