2011年6月22日水曜日

クラスを分割する。

プログラムの機能を増やして行くと、1つのオブジェクト内のコードが膨大となってしまい、メンテナンスがしずらくなります。この解決のためには、やはりオブジェクトとして意味のある単位で分割してまとめるが王道です。

小さく切出す場合は、UIViewの派生オブジェクトとして作るか、ビューコントローラの一部を切出してコントロールするかになるかと思います。しかしながら後者についてはAppleとして推奨しないようです。

実装する際は、これまでグローバル変数などで管理していた状態等を隠蔽しながら実装します。
そのため、状態遷移のためのメソッドを切出したオブジェクトに実装します。
また、呼び出しもとのオブジェクトの状態を確認するためには、プロパティとして状態変数を表に出します。

その結果、ヘッダファイルとしては以下のようなものとなります。


@interface decimalMode : UIView {
NSString *now;
}
// 状態をプロパティ化し、読み出し可能とする ex decimalMode.now
@property (nonatomic, retain) NSString *now;
// 状態を変化させる操作をインスタンス化する。インスタンスの名称には操作の意味を持たせる。
-(void) zero ;
-(void) add2 ;
-(void) two ;
-(void) flowting ;

-(IBAction) decimalPointButtonPressed:(id)sender;
@end