デザインパターン等
入門書は理解したし文法も覚えたし、とりあえず動くコードが書くことはできた。
その次のレベルへの橋渡しとして参考にするのにお勧めの本をいくつか出版年度の新しい順に紹介します。
流石に10年以上前に出版されたものはちょっと古いですね。改訂版が望まれます。
・Effective C# 6.0/7.0 2018/9/5
C#を使った開発時に、躓きがちな問題点である、高速化・効率化・可読性の向上・メンテナンス性の向上・最新機能を盛り込みつつ、後方互換も取らなければならない・API設計指針などの解決策を、豊富な実例とともに詳解しています。 |
EffectiveシリーズのC#版の改訂版(第3版)。文法は分かる、コードは書けるという初学者がその次の段階へ進む手助けになります。可読性や効率性など文法の一つ上の話しが詳しい実例を踏まえて丁寧に解説されています。
・Adaptive Code ~ C#実践開発手法 第2版 2018/2/24
変化に対応しやすいコードを“アダプティブコード"(adaptive code)と呼び、変化に柔軟に対応できるソフトウェア開発を実現するために、アジャイル開発、デザインパターン、SOLID原則を、開発現場でどのように実践するかを解説 |
2015年に発売された「C#実践開発手法」の改訂版になります。タイトル変わってますけど。すっかり定着した(?)アジャイル開発のノウハウとコーディングテクニックとを豊富なサンプルコードで解説されています。マイクロソフトの公式解説書でもあります。
・More Effective C# 6.0/7.0 2018/2/20
td> | 馴染みのやり方ではなく、新しい手法を導入するのは心理的なハードルが上がる場合もありますが、本書ではそのハードルをさげるため、なぜ言語の補強によってより良い方法が可能になったのかまで、詳説しています。 |
Effectiveは「More」アリ版とナシ版がありますが、内容が違うので上下巻といった感じです。こちらは非同期プログラミングや動的プログラミングなどを扱っています。説明方法が合うようなら合わせて読まれることをお勧めします。
・実戦で役立つ C#プログラミングのイディオム/定石&パターン 2017/2/18
C#のプログラムを作成するには、解こうとする問題の手順と利用するデータ構造を考え、それをC#のコードとして記述するスキルが必要になってきますが、そういったスキルは、現場で利用されているイディオムや定石といったパターンを学習することで得られます。 |
比較的平易な内容なので初学者でも充分読めると思います。C#での開発ではどれも重要な事柄ですので是非一度目を通しておきたいものばかりです。中級者でも網羅的に知識の欠落がないかの確認に最適です。
・リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック 2012/6/23
「美しいコードを見ると感動する。優れたコードは見た瞬間に何をしているかが伝わってくる。そういうコードは使うのが楽しいし、自分のコードもそうあるべきだと思わせてくれる。本書の目的は、君のコードを良くすることだ」 |
職業プログラマーは複数人による共同作業であったり、前任者の引継ぎがあったりと他人様のコードを読む機会がかなり多いです。そこには目を見張るほど綺麗で読みやすいコードがあったりします。その違いはどこにあるのか、本書を読めばよくわかります。発売からだいぶ時間が経っていますが、今でもベストセラーの意味はよく分かります。後輩には絶対読ませたいですもの。
・CODE COMPLETE 第2版 上 完全なプログラミングを目指して 2005/3/26
ソフトウエア開発の方法論を幅広く網羅した入門書。上巻は設計やプログラミング、下巻はテストやデバッグを扱う。 |
・CODE COMPLETE 第2版 下 完全なプログラミングを目指して 2005/3/26
ソフトウエア開発の方法論を幅広く網羅した入門書。上巻は設計やプログラミング、下巻はテストやデバッグを扱う。 |
上下巻合わせてプログラマー必読の定番書ではあったのですが、流石に発売が2005年。原書はその一年前ですから内容は古いです。とは言え、重要な書籍である点は今でも変わってはいません。初版が98年でこれは第二版で2005年。第三版は出ないんでしょうか。
・オブジェクト指向における再利用のためのデザインパターン 1999/10/1
本書は柔軟で、再利用可能な、理解しやすい設計のために、オブジェクト指向ソフトウェア設計において遭遇するさまざまな問題に対する解法を、23個のデザインパターンとしてカタログ化。 |
デザインパターンの邦訳。この当時のパターンが今の時代に綺麗に当てはまることも稀なのですが、と言ってその用語や考え方まで知らないとも言えないところです。ちゃんと学ぶのなら読んでおくのも良いですがかなり読みずらい本ではあります。
・Design Patterns: Elements of Reusable Object-Oriented Software 1994/10/31
デザインパターンの原書の方です。1994年ですね。オブジェクト指向黎明期にSmalltalkという言語を前提に考えられた定石本です。英語に問題ないなら酷い翻訳本よりこちらがおススメ。
川俣本
C#言語の解説本なら川俣晶先生がド定番でした。
軽妙な川俣節はとても読みやすく、勉強になります。
最近はあまりC#関連の書籍は出版されてないのが残念です。
ネット上にも解説記事を探せますが、まとめて書籍で読めるのは嬉しいですね。
・C#ショートコードプログラミング 第3版 2018/3/30
本書は、C#でコードをいかに短く記述するかというアイデアをまとめた解説書で、具体的には、式化、out変数、値型タプル、null演算子などの機能を使うアイデアを紹介。気になった項目についてはコードの実行速度にも着目。 |
C#7.2対応。より短いコードの書き方。但し可読性とパフォーマンスを劣化させない範囲で。そのテクニックが学べます。
・C#プログラマーのための デバッグの基本&応用テクニック 2016/10/20
プログラムの原理を理解し、ある程度のコツをつかめば、かなりの確率でバグを潰せるようになると。本書で、そういったプログラマーに必須のコツを伝授。 |
プログラミングにバグは付き物で、そのためのデバッグは誰もが行うことですが、その方法論を正面から取り上げた書籍もあまりないですね。経験によるところの大きいデバッグ作業について先達からの指南書です。
・C# 6 実践的プログラミング[入門]講座 2015/8/25
C#6の解説書。可能な限り既存のコード資産の活用方法を追究。 |
2015年にリリースされたC#6.0の機能紹介の記載はありますが、そういう文法の紹介だけではなく、商業プログラマーとしての座視のような面白い読み物です。もうC#8.0までリリースされています。新版期待してます。
プログラムが書けるようになった後、効率よく作業を進めるにはどうすればよいか、品質を保証するにはどうすればよいか、同じ目的のために複数の技術がある場合はどう使い分ければよいか、複数の書き方がある場合はどれを使えばよいか、ドキュメントは何を書けばよいのか。 |
コードが書けるようになると、同じような機能を実装する方法が一つではないことに気が付きます。どういう観点でどちらを選べばいいのか。悩みどころを一緒に考えてくれます。
・裏口からのC# 実践入門―バッドノウハウを踏み越えて本物へ!! 2014/11/8
失敗にはパターンがあり、分類可能な、類型化できる原因があります。そういった実際によく発生する事例をタイプ別・原因別に提示し、何がいけなかったのか、本当はどうすべきか、それをどう改良すればいいかなど、現役のプログラマーに必要な知恵を授ける |
初学者でも直面する内容から、上級者でも使わんような機能までを川俣節で軽妙に解説されていきます。まぁ、類書のない面白さです。ちょっと古いが内容は大丈夫です。
・【省エネ対応】 C#プログラムの効率的な書き方 2012/1/19
C#が提供するLINQ to Objectsで、より無駄の少ない効率的な短いコード、よりトリッキーなアクロバット的コードが学べる。 |
LINQとその前提のラムダ式の解説。ちょっと古いですが、今読んでも面白くてためになります。改版が望まれます。
ファウラー本
オブジェクト指向を牽引されてきたアナリストであるマーチン・ファウラー氏の邦訳です。
どれも歴史的名著ですが、読み下すにはかなりの努力が必要。中級から上級向けでしょうか。
なかなか読みずらい邦訳ばかりなのは何故なんでしょう。
どれも原書を薦めたくなります。
・リファクタリング(第2版): 既存のコードを安全に改善する 2019/12/1
”Refactoring: Improving the Design of Existing Code”の日本語版です。本書はリファクタリングのガイドブックであり、リファクタリングとは何か、なぜリファクタリングをすべきか、どこを改善すべきか、実際の事例で構成され、ソフトウェア開発者にとって非常に役立つものとなっています。 |
リファクタリングという言葉自体はもう一般化してますね。語源は本書の前版です。19年を経てやっと第二版がリリースされました。サンプルコードはJavascriptに変更されてます。オブジェクト指向系の言語をやってる方は必読でしょう。
・ドメイン特化言語 パターンで学ぶDSLのベストプラクティス46項目 2012/5/2
”Domain-Specific Languages”の日本語版です。DSLについてきわめて網羅性の高い、実践的な解説書です。DSLの幅広い手法を紹介し、読者がDSLを使うべきかどうか、DSLのどの手法を使うべきかどうか読者が正しい情報に基づく適切な判断ができるように導きます。 |
原書はDSL(Domain Specific Language)に関する歴史的名著として名高いのですが、邦訳は流行りませんでしたね。ファウラー本やファウラーサイトを読み込んでないとちょっと読み切れないぐらいには難解で不親切だったりします。
・UML モデリングのエッセンス 第3版 2005/6/16
”UML Distilled: A Brief Guide to the Standard Object Modeling Language”の日本語版です。UML2.0に対応で、UMLで定義されたさまざまな図(ダイヤグラム)の利用方法を解説。リファレンスではなく、そのエッセンスの解説。 |
本書が発売された当時は設計をUMLで行うのが流行っていて納品物にも指定される時代でした。今ではすっかり下火になってしまいましたが、それには多分の誤解もあったと思います。本書はUMLの入門書としても使えはしますが、やはりUMLを使った設計の経験があってこそ理解できる点も多いでしょう。流石に内容が古いのですが、本質的な点はまだ通用しているところもまたすごいと思います。
・エンタープライズ アプリケーションアーキテクチャパターン 2005/4/21
”Patterns of Enterprise Application Architecture”の日本語版です。エンタープライズアプリケーション開発者が直面するやっかいな課題に対する直接的な回答を示したものです。 |
原書は歴史的名著であり、当時のPGもSEも必読の書でした。とは言え原書の出版は2002年であり、流石に古さは否めない。早急な改版が望まれます。C#(.NET)の他にJava(昔の仕様の方)の知識も若干必要ですが、問題は邦訳が余りに惨いこと。とても読めたものではありません。英語が苦手でも覚悟を決めて原書に挑戦しましょう。
・アナリシスパターン―再利用可能なオブジェクトモデル 2002/4/1
”Analysis Patterns: Reusable Object Models ”の日本語版です。オブジェクトモデルを開発し、共有すべきオブジェクトを提供する人に対して、オブジェクトモデル開発の方法を、オブジェクト関連のパターンで誘導する。 |
当時はアナパタで通じたぐらい有名でしたが、内容は抽象的で難解であり、その解釈をめぐって多くの議論が交わされたものです。ファウラー伝説の名著でしたが、邦訳版は既に絶版です。電子書籍化もされてないんですね。原書なら電子書籍もハードカバーもペーパバックでも入手可能です。