日々精進

新しく学んだことを書き留めていきます

iPadアプリの設計方針

最近大事だなと思った方針を箇条書きにしてみる。
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に関係するロジックをモデルの中に書いてはいけない。