<< 調和 (Symmetry) | main | 実践 ICONIXプロセス : コントロールとコントローラクラス >>

変更率 ( Rate of Change )

Kent Beck の 読みやすいコードの6原則の最後。

同じタイミングで変更するデータ、関連するロジックは、いっしょにすべき。

具体例:(書籍から)

金額を通貨単位といっしょに扱う例ですね。

setAmount( int value, String currency )
{
 this.value = value ;
 this.currency = currency ;
}

value と currency はいつもセットだからいっしょにすると分かりやすい。
Money オブジェクトを作る。

setAmount( int value, String currency )
{
 this.value = new Money( value, currency ) ;
}

パラーメータも2つはいっしょなので Money オブジェクトを使う。

setAmount( Money value )
{
 this.value = value ;
}

最初のサンプルコードでは、value と currency の関連性は、人間が判断する。コード上はばらばらに見える。

最後のサンプルコードでは、value と currency を Money にカプセル化し、かつ、詳細を情報隠蔽している。

int value
String currency

がコードに散在していたのを

Money value

にひとまとめにする。

これで、
・意図が明確になった (コードが業務つまり問題領域の用語になった)
・あちこちに同じコードを書かなくてよくなった
・通貨に関する知識を Money オブジェクトローカルにカプセル化できた

Kent Beck の「読みやすいコード」の原則とその具体例です。

コメント
コメントする









この記事のトラックバックURL
トラックバック
calendar
   1234
567891011
12131415161718
19202122232425
2627282930  
<< November 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