<< 実践 ICONIXプロセス : サービスクラス | main | 実践 ICONIXプロセス : メソッドの割り当て先のクラス >>

実践 ICONIXプロセス : メッソドはどこのクラスに?

クラスは一通り発見できました。
あとは、クラスが協調して、ユースケースを実現できるように、クラス間のコミュニケーションを設計しなければいけません。

シーケンス図でいえば、メッセージの定義、クラス図だと、操作をクラスへ割当てる、コードへの実装だと、メソッドの定義ですね。

作業は簡単

Enterprise Architect のようなモデリングツールを使えば、これは、一つの作業としてやることができます。
シーケンス図上でメッセージを追加すると、自動的にクラスの操作として追加でき、コードの自動生成機能で Java コードのメソッド宣言のコードを作れます。

最難関

図を描く作業は簡単ですが、設計としては、最も難所にさしかかっています。

どのクラスにどの操作(メソッド)を割り当てるかは、概念ではなく、現実の意思決定だし、その決定がそのまま実装クラスの構造になります。

コードが理解しやすく変更も安全で容易になるか、理解不能で副作用が怖くて変更ができないスパゲティになるかは、ここでの意思決定が分岐点になります。

設計の神髄だし、上級の技術者とかけだしの技術者の腕がもっとも違うところですね。

基本パターンの勉強

操作の割当(メソッドの設計)のパターンは、最近は、勉強すればたくさんの良い情報が手に入ります。

特に、以下の6冊はお薦めです。

レベッカワーフスブラックの オブジェクトデザイン
Eric Evans の Domain-Driven Design (DDD)
Pavel Hruby の ビジネスパターンによるモデル駆動設計
マーチンファウラーのエンタープライズ・アプリケーション・アーキテクチャ・パターン (PoEAA)
同じく リファクタリング
Kent Beckの Implementation Patterns

私は、これらの本で、どういうクラスを、どういう操作(メソッド)を割り当てるかの考え方と基本パターンを勉強しました。

特に、なぜ、こういうパターンが良いか、あるいは、なぜ、こういうパターンは悪いかというという、考え方・判断材料をいろいろ勉強しました。

共通していることは、唯一のベストパターンはない、ということです。何を重視し、何をあきらめるかによって、いろいろパターンがある。

重視すること

私は、基本的には、
・読みやすいコード
を最も重視しています。

・大きなクラス、大量のメソッドを持つクラスは読みにくい。
・長いメソッドは読みにくい
・名前の省略形は読みにくい
・問題領域の言葉(業務用語)中心だとコードの意図が分かりやすい
...

まあ、これだけで意思決定できないケースが多いんですけど、コードの基本価値として、ここにはこだわっている。
実際に、それが、分かりやすく、変更が安全で容易なコードを作ることに効果があがっていると思う。




コメント
コメントする









この記事のトラックバックURL
トラックバック
calendar
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
<< July 2017 >>
システム設計日記を検索
プロフィール
リンク
システム開発日記(実装編)
有限会社 システム設計
twitter @masuda220
selected entries
recent comment
  • 番号より名前。 ニーモニックコードより名前。 【パターン】
    師子乃 (03/10)
  • Smart UI が優れている?
    masuda220 (03/10)
  • Smart UI が優れている?
    kagehiens (03/09)
  • オブジェクト指向プログラミングの教え方?
    masuda220 (12/05)
  • オブジェクト指向プログラミングの教え方?
    ZACKY (12/04)
  • 「オブジェクトの設計力」 スキルアップ講座やります
    masuda220 (08/14)
  • 「オブジェクトの設計力」 スキルアップ講座やります
    kompiro (08/14)
  • 「オブジェクトの設計力」 スキルアップ講座やります
    masuda220 (06/13)
  • 「オブジェクトの設計力」 スキルアップ講座やります
    JHashimoto (06/13)
  • 「オブジェクトの設計力」 スキルアップ講座やります
    masuda220 (02/28)
recent trackback
categories
archives
others
mobile
qrcode
powered
無料ブログ作成サービス JUGEM