最近大事だなと思った方針を箇条書きにしてみる。
○MVC-VM-Sパターンを使う。
MVCに加えてViewModelとStoreを使う。対応するCocoaのクラスは大体以下のようになると思う
Model:Core Dataのサブクラス
View:CALayer。普通は直接操作しない
Controller:UIViewControllerのサブクラス
ViewModel:UIViewのサブクラス
Store:
エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)
でいうRepository。NSObjectを継承して自分で作ることになると思う。
○ビューを太らせる
iPadアプリはGUIを操作するコードが多くなる。
そういうコードはコントローラに入りやすいのでどんどんコントローラが太ってしまう。
コントローラは薄くするべきなので、ビューにコードを移す。
コントローラとビューの役割分担は以下。
・ビューは一つのビュー内で完結するGUIの操作を担当する
・コントローラは複数のビューへの操作を担当する
○UIヘルパークラスを使う
複数のビューで共通のロジックを使いたい場合、ヘルパークラスに共通ロジックを置く。
例えば、株の値上がり率が0より大きい場合、値上がり率のフォントを赤色にするケース。
このコードを画面のいろんなところで使いたいので、Stockヘルパークラスを作る。Stockモデルを引数に取るStaticメソッドを定義してその中に色を判定するロジックをかく。
こういうUIに関係するロジックをモデルの中に書いてはいけない。