【本書の内容】
“Effective SOFTWARE DEVELOPMNET SERIES”のC#エディション最新版。
もちろん、最新機能の完全網羅ではなく、日常的に遭遇しそうな問題を
解決する、実用的なアドバイスをさまざまなサンプルとともに提供します。
通常、これまでのバージョンにおいて、実装するにあたって困難だったり
手順が入り組んでいるなど、開発者の負担を軽減するために導入されるのが
新機能です。
馴染みのやり方ではなく、新しい手法を導入するのは心理的なハードルが
上がる場合もありますが、本書ではそのハードルをさげるため、なぜ言語の
補強によってより良い方法が可能になったのかまで、詳説しています。
【本書のポイント】
・最新版C#に搭載された新機能を把握できる
・上記新機能を的確に使えるようになる
・なぜそうしたほうがよいのか、を理屈ベースで理解できる
・よりよいプロダクトを構築できるようになる
【本書の目次】
第1章:データの型
第2章:API設計
第3章:タスクベースの非同期プログラミング
第4章:並列処理
第5章:動的プログラミング
第6章:グローバルなC#コミュニティに参加しよう
第1章 データ型の扱い
項目1 アクセス可能なデータメンバーの代わりにプロパティを使おう
項目2 可変データには暗黙のプロパティを使おう
項目3 値型は可変より不変が好ましい
項目4 値型と参照型の違いを正しく理解しよう
項目5 値型では0も有効な状態にしよう
項目6 プロパティはデータらしく実装しよう
項目7 匿名型やタプルは型のスコープを限定するのに使える
項目8 匿名型にローカル関数を定義する
項目9 さまざまな同一性が、どういう関係にあるかを把握しよう
項目10 GetHashCode()の罠に注意
第2章 API設計
項目11 独自のAPIでは変換演算子を定義しない
項目12 省略可能なパラメータを使ってメソッドの多重定義を減らそう
項目13 独自の型は可視性を制限しよう
項目14 継承するよりインターフェイスを定義して実装しよう
項目15 インターフェイスメソッドと仮想メソッドの違い
項目16 通知のイベントパターンを実装しよう
項目17 内部オブジェクトへの参照を返さないように注意しよう
項目18 イベントハンドラよりオーバーライドが好ましいとき
項目19 基底クラスに定義のあるメソッドを多重定義しない
項目20 オブジェクトの結合はイベントによって実行時に強まる
項目21 イベントをvirtual宣言するのは避けよう
項目22 明瞭で最小で完全なメソッドグループを作ろう
項目23 部分クラスにはコンストラクタ、ミューテータ、イベントハンドラの部分メソッドを入れる
項目24 ICloneableは設計の選択肢を狭めるので避けよう
項目25 配列をパラメータとして使うのはparams配列だけにしよう
項目26 イテレータや非同期メソッドのエラーは、ローカル関数で即座に報告できる
第3章 タスクベースの非同期プログラミング
項目27 非同期処理には非同期メソッドを使おう
項目28 async voidメソッドを書くべからず
項目29 同期メソッドと非同期メソッドの混成を避けよう
項目30 非同期処理に不要なスレッド割り当てを避けよう
項目31 不要なコンテクスト切り替えを避けよう
項目32 複数のTaskオブジェクトで非同期処理を構成する
項目33 タスクのキャンセルや進捗報告を行うプロトコルを実装する
項目34 総称的なValueTask
第4章 並列処理
項目35 PLINQによる並列アルゴリズムの実装を学ぼう
項目36 並列アルゴリズムは例外を考慮して構築しよう
項目37 スレッドを作る代わりにスレッドプールを使おう
項目38 スレッド間通信にはBackgroundWorkerを使おう
項目39 XAML環境でのスレッド間コールを理解しよう
項目40 同期をとるにはlock()を最初の選択肢にしよう
項目41 スコープが最小限のロックハンドルを使おう
項目42 ロックしたセクションで未知のコードを呼び出さない
第5章 動的プログラミング
項目43 動的型付けの長所と短所を理解しよう
項目44 動的型付けで、ジェネリックな型パラメータの実行時の型を活用する
項目45 データ駆動の動的な型は、DynamicObjectかIDynamicMetaObjectProviderで作ろう
項目46 Expression APIの使い方を理解しよう
項目47 パブリックAPIでは、動的オブジェクトを最小限にしよう
第6章 グローバルなC#コミュニティに参加しよう
項目48 人気のある答えではなく、最良の答えを探そう
項目49 言語の仕様と実装に参加しよう
項目50 アナライザによる実践の自動化を考慮しよう
YUKI さん
2022-04-01
業務でやたら非同期処理を触るようになり、ちゃんと勉強しようと非同期処理をメインに読む。複数タスクまわりの説明は勉強になりました。その後に改めてMicrosoftの非同期処理の説明を読むと頭に入りやすかった。まだ読んでない箇所もあるし、何度も再読しそうな1冊。
いえっさ さん
2022-04-01
相変わらずナイスなシリーズでした。 async/await周りの話、dynamicの取り扱いについては非常に為になった。
fjt7tdmi さん
「項目49 言語の仕様と実装に参加しよう」わらう