この記事は
以下のツイートを見つけました。
C#実践開発手法の第2版『Adaptive Code』の発売日が決まりました。2月24日です。
— Adaptive Code (C# 実践開発手法 第2版) bot (@AgileCodingCS) 2018年2月7日
今後は、耳寄りな情報もお伝えしていきます。 pic.twitter.com/hTFhlCIn2m
『C#実践開発手法』は、私が好きな本の一冊で、このブログでもたまに話題にしていました。以下の記事でも若干触れています。
しかし、一度も記事にしていない!
と、ふと気づきました。
というわけで、思いの丈を打ち明けてしまおう、そういう記事です。
本書が想定する読者
前書きに、
構文がC#に似ている言語のプログラミングの実務経験があるのが理想的
プログラミングの勉強を始めたばかりである場合、本書はふさわしくないかもしれません。本書では、プログラミングの基本概念を十分に理解していることを前提として、高度な内容を取り上げています。
とあるように、実務経験を含めた知識を持っている人を想定しています。
個人的には、条件を満たすなら、絶対に読んでほしいです。
本書の目的
前書きに、
「アダプティブ」とは、コードを大幅に変更することなく、新しい要求や予想外のシナリオに対応する適応力のことです。
とあります。*1
つまり、適応力をコードに持たせるにはどうするか、ということを説明してくれます。
想定読者で、なぜ実務経験を必要としているのか、というのは、適応力について腑に落ちている必要があるからでしょう。
業務でコーディングする場合、要件や仕様の変更でソース修正を余儀なくされた、という経験は必ずあると思います。
そしてまた、それで苦労した経験も、必ずあります。
そういう場合に、理論上は、こういう作りにすればよいという原則があります。
それを現実にどう適用するのかを、本書は説明してくれます。
どんな本
三部構成です。*2
内容どんな感じ
アジャイルそのものの説明以外は、とにかくサンプルコードいっぱいです。
これはこういうことだよ、と理解させようとしてくれます。
サンプルコードが多いのは、上で書いた「現実にどう適応するか」を考えるのに、非常に役に立ちます。
例えば、こんな感じの内容です。(アジャイル部分を、自分の言葉で雑にまとめた)
アジャイルはこういう開発サイクルだよ
→その中で「理想的なコード」より「リリースを優先したもの」が生まれるよね
→それって技術的負債だよね
とか、
完成ってなに?
アジャイルプロジェクトの進捗とかは、こうやって測るんだぜ
不適応なコードって、なんだろうね*3
みたいなことが、次々と語られます。
アジャイルの専門書の復習に使うもよし、興味があったらアジャイルの専門書を読むもよし。
至れり尽くせり。
衝撃を受けた内容の数々
あえて、背景をぼかします。どういう意味なのかは、本を読んでほしいです。
以下で、コードの悪い部分を書きますが、前提としてこういう場合はダメというものがあります。
newキーワードの存在をコードの臭いとみなすことができる
序盤に書かれることですが、いきなり依存性の注入について説明されます。それだけ大事な概念ということです。newと同じく、Service Locatorもアンチパターン
IsNullプロパティはアンチパターン
Nullable<T>
は値型だし…。HasValue
って名前だからOK、ということではなく、比較的低水準の処理だから無いと困る。SOLID原則に関する説明が、全てサンプル付きで詳細に書いてある
SOLID原則とはこれらのことだ!と書いてある書籍はありますが、実用に近い(ような気がする)サンプルコードを載せた本は、私の中では本書が初でした。DIコンテナは、「すべて手動制御」か「パターンマッチング*4による自動化」以外は、よろしくない
第2版の英語版目次を見て
Amazonのなか見検索で、英語版の目次があったので。
第1版は、アジャイルの部にインターフェイスやユニットテストの話があったが、アダプティブコードの構成要素という章にまとめられた様子
「アダプティブサンプル」はなくなった
「テスト」と「リファクタリング」が、それぞれ独立した章になった
依存関係については、まさかの3章も割かれている様子(依存関係と階層化、依存性の反転、依存性の注入)
凝集や結合の章が新設
…ずいぶん、変わってませんか?
そもそも、使っているツール等も全て最新にしてくれていそうな気がするし、第1版を持っていても第2版が欲しいのは、私だけでしょうか?
既に楽しみ
すごくどうでもいいしょうが、発売日の次の日が、ブログ筆者の誕生日です。
プレゼントでしょうか?買います。
おわりに
変更に強いシステムは、私が理想としているものです。
実際に作る場に立つのも当然大事なのですが、こういう、しっかり解説してくれる本を読んで、実際に手を動かして、他人の経験から学ぶのも、非常に大事だと私は思っています。
読んで損した、という気持ちにはならないと、私は思います。
業務でうまくC#やJavaが扱えないなぁ、と思っている人は、一読を強くお勧めします。
…出版社や作者さんの回し者とかではないです。