Effective C# 6.0/7.0を読んだ
本書はC#について50のヒントを教えてくれる
低レイヤよりの話が続くため、普段から高レイヤしか触らない自分には読みごたえがあった
著者のBill Wagner氏はMicroSoftでC#や.NETのコンテンツ制作に関わっている方で、本書でも言語仕様への深い理解に基づくヒントが散りばめられている
恐らく対象読者は中級者〜上級者だと思う。C#初級者は知らない単語が多すぎて厳しい
オブジェクト指向やアルゴリズム・データ構造の基礎が分かれば8割読めるかな〜って感じ
1章 C#言語イディオム
タイトルの通り、便利なイディオムの紹介する章
ボックス化、ボックス化解除の話はパフォーマンスに関わることなので、必ず理解しておきたい
2章 リソース管理
本書では、優れた開発者はリソース管理方法を理解する必要があると書かれている
そのリソース管理をガッツリ解説してくれる章
C#ではガベージコレクションが用意されているため、開発者はメモリ管理の方法を考えなくても良い
一方で、メモリ以外のシステムリソースの管理は開発者の責務となるため、IDisposable
を使ったリソースの管理方法を理解し、さらに不必要なオブジェクトの生成は避ける必要がある
3章 ジェネリックによる処理
ジェネリックによって抽象度の高い実装を行うためのヒントを紹介する章
また、ジェネリックがILコードでどのように表現されるかも詳しく解説されていて読みごたえがある
共変性・反変性の話や後方互換を想定しながら書くこと、ジェネリックの使い所に関する話は面白かった
4章 LINQを扱う処理
LINQの話だけではなく、ジェネリックやデリゲート・コールバック関数についても取り上げている章
↑の言語機能を使って上手くオブジェクトの振る舞いや関係を表現する話が良かった
パフォーマンス面の話もあるので、読むべき
5章 例外処理
タイトルの通り、例外処理に関する話
例外の正しい処理の仕方や、既存の例外クラスではなく独自の例外クラスを作ろうという話をしている
例外の扱い方を学ぶ機会って中々無かったので新鮮な話だった
まとめ
C#の言語仕様やILコードに基づく説明がされるので、しっかりと読むと低いレイヤへの理解が深まる
流し読みでもC#におけるベタープラクティスを知れる
1度では理解しきれないので、時間を置いてからもう一度読み返したい
本書に書かれていることは、実はMicroSoftのドキュメントを読むと書いてあったりするので、内容が難しければ公式ドキュメントも参照するとより理解が深まるかも
Discussion