読者です 読者をやめる 読者になる 読者になる

C# 実践開発手法 感想

C#実践開発手法 (マイクロソフト公式解説書)

C#実践開発手法 (マイクロソフト公式解説書)

今年春頃に開催されたC#のセミナーで割引購入した書籍.
色々あって後回しになっていたけれど,何とか年内に読了.

タイトルに「C#」とあるけれど,
メインはオブジェクト指向設計および実装に関する話なので,
他の言語を専攻している人でも問題なく読めると思う.

本書のテーマは「Adaptive Code」.
変更に強いコード,と言えば良いだろうか.
まさにオブジェクト指向プログラミングが得意とするテーマと言える.

Adaptive Codeは,さらに以下の5つの原則にブレイクダウンされ,
その頭文字をとって本書では「SOLIDコード」とも呼ばれている.

(1) Single Responsibility Principle(単一責務の原則)
(2) Open/Closed Principle(開放/閉鎖の原則)
(3) Liskov's Substitution Principle(リスコフの置換原則)
(4) Interface Segregation Principle(インターフェイス分離の原則)
(5) Dependency Inversion Principle(依存性反転の原則)

それぞれを荒っぽく言い換えると,
SOLIDコードは以下の特性を持っていることになる.

(1) 各クラスの責務が最低限に分割されている.
(2) 既存コードに変更を加えることなく,インクリメンタルに機能拡張できる.
(3) 親クラスのオブジェクトを子クラスのオブジェクトに差し替えても正しく動く.
  ※ここで言う「正しく動く」とは,コンパイルが通るという意味ではなく,
   システムの目的が損なわれないという意味.
(4) インターフェイスが適切な位置に適切なサイズで用意されている.
(5) 依存性注入(DI)が正しく利用されている.

単純に動くだけのコードを作るだけなら,SOLIDを意識する必要はないが,
そのようなコードは,変更に対してとても脆い.
仕様が(凍結させた後にも関わらず)コロコロと姿を変える現場において,
SOLIDコードが最終的にプログラマの身を守ることは,想像に難くない.

なお,実際のC#コードを踏まえての説明が多いので,
書籍だけで全てを理解するのはかなり厳しい.
GitHub上にコードが公開されているので,そちらを眺めながら
読み進めるのが吉だと思う.

SOLIDコードだけではなく,TDDやリファクタリングといった
お決まりのテーマの実践例も載っているので,
Visual Studioを使ったC#開発に興味がある人は,
最初は斜め読みでも良いので,手元に置いておくべき書籍だと思う.


そういえば,最近C#触ってない気がする.