クラスを如何に作るか?≒基本的な設計思想

初心者の頃に悩んだのが、
まずどんなクラスを作れば良いのか?
だったりする。今だに悩むことがあるけども。オブジェクト指向に拘ると、碌なことにはならないってのが経験からわかってきたくらいか。どのクラスにも入りそうにないものが出てくるんだよなぁ。
色々な本とか読んでも、サンプルはあるんだけど、クラスの設計思想までは教えてくれない。
で、元の会社の先輩である、師匠のクラスの作り方を見て、大体以下のようなカテゴリ(UMLで言えば、「ステレオタイプ」かな)に分けて作ることにしている。

Container(コンテナ)
「色々な物(データ)を放り込む為の箱」という位置づけ。リストの要素、DBテーブルのレコード1件分と考える。あるいは、それらを複数持つクラス。データを出し入れするためのプロパティをたくさん持っている。出し入れだけではなく、加工するためのメソッドを提供したりもする。

DAO(Data Access Object)
Javaの世界では、昔そう呼ばれていた。今はModelかな?
DB内のテーブルへのアクセス(検索、更新、登録)をメインとするメソッドを提供するクラス。
むしろ、こいつ以外のクラスはDBへのアクセスができないと縛るくらい。

Logic(ロジック)
DAOを使ってDBにアクセスしてみたり、その結果で得られたレコード(コンテナ)をチェックしてみたりと、何かと忙しいロジック用クラス。ある一括りの処理を実行するメソッドを提供する。
オブジェクト指向?なにそれ?な関数型になりがち。でも気にしない。

Utility(ユーティリティ)
上3つのカテゴリのどれにも入らない便利系メソッド。文字列操作、配列操作、ファイル操作用のメソッドがそれらにあたる。どこでも使える、どこでも使っていいメソッドを提供する。基本的にstaticなクラスで、staticなメソッドを提供する。

これらを基本方針にして、名前空間も決めていく。
まあ、どこの世界にも言えることだけど、習うより慣れろなんだよなぁ。トライ・アンド・エラーとも言うか。
スポンサーサイト
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: C# | コメント: 0 | トラックバック: 0


この記事へのコメント

コメントの投稿

非公開コメント


サイドバー背後固定表示サンプル

当ブログに書かれたソースコードは流用自由です。

バグ、スペルミス等はありうる事です。

ご利用の際は自己責任でお願いしますm(_ _)m