プログラミング C# - 翔ソフトウェア (Sho's)

C#/.NET/ソフトウェア開発など

.NETで始めるデザインパターン

stateptn.jpg

楽しみにしていた 中西 さん の記事が @IT に載った。

私の偏見かも知れないが、.NET 開発者は、Java の人たちと比較して、オブジェクト指向だのデザインパターンだのに慣れていないような気がする。

だから、今回のような .NET 開発者向けの記事は、これからとても重要だ。

これから .NET 開発者の前には、テスティング フレームワークだとかリファクタリングだとかエンタープライズ パターンだとか DI (DependencyInjection) コンテナだとかアスペクト指向だとか、Java の人たちが取り組んできた様々な技術の可能性が待っている。

そしてこれらは、オブジェクト指向やパターン技術に関する知識を前提としているのだ。

ところで、中西さんは、ドットネッターでアジャイラーで TDD Player (謎) だ。

なので、デザインパターンの有用性を .NET 開発者に教えるのにもなんだかとてもアジャイルな感じだ。

これまでのデザインパターンの解説に、次のような言葉が使ってあるものがあっただろうか。

  • 「モチベーション指数」
  • 「ホワイト・ボードにクラス図」
  • NUnit用テスト・コードを記述してみよう」

例題も、HowMuchGreenbarLover メソッドだとか、HowHappy メソッドだとか。

福井 さん も書いてたが、とても中西さんらしい。

※ この記事は、Ichikawa さん のところでも紹介されている。

さて、今回の記事では、次のような問いに答えている。

問い:

デザインパターン? 何それ? 何が良いの? .NET な我々にメリットあるの?」

でこれに関する有り勝ちな答え:

  1. デザインパターンというのは、こうこうこういうものだ」
  2. 「例えば、State パターンというのがあって、それはこういうもので・・・」
  3. 「使い方は、こんな感じ」
  4. VB.NETC# でサンプル コードを書いてみると、こんな感じだよ」
  5. 「ねぇ、わかった? 良さそうでしょ。使ってみてよ」

これは、演繹的な説明だが、なんだかウォーターフォールな感じだ。

「うーん、どういうものかはなんとなく判ったけど… まあいいや、また今度改めて勉強するよ」

とか言われてしまいそうだ。

# 私経験有りますから!! 残念!!! 切腹!

で、中西 さん の答えは一味違う。少し真似してみるとこんな感じだろうか。

中西さん風の答え:

  1. 「例えば、VB.NETC# でこんなコードがあるとするやん」
  2. 「ありがちなコードやけど、これってどうなんかなー 自分どう思う?」
  3. 「こんな風にしてみたらどうかなー」
  4. 「な? 自分知ってるやろ? ポリモーフィズム。どう、これ」
  5. 「これが State パターンや。で、今やったのがリファクタリング
  6. 「な? 今度から State パターンやらいうたら、こういうのを指すんやで」

※ フィクションです。実在の中西さんとは関係ありません。

デザインパターン23個覚えたぞ。さあ何かに役立てよう」でなくて、リファクタリングの結果として、使うべきところに使う分だけのデザインパターン

こういきたいものだ。

さあ、今後の連載にも期待だ。

※ 2005/02/02 第2回が掲載。