C#プログラムとデザインをさらに向上させる50の方法
『Effective C++』や『Effective Java』、そして『More Effective C++』や『More Effective Java』を生んだ“Effective SOFTWARE DEVELOPMENT SERIES”からC#版の登場です。本書は『Effective C#』では取り上げられなかったことや、C#バージョン3.0/3.5などで新たに実装された機能(ジェネリックやLINQ、マルチスレッドモデルなど)を中心に、効果的で正しく動作し、例外が発生しても堅牢で効率的なソフトウェア開発の実現を手助けします。
第1章 ジェネリック
項目1 1.xフレームワークAPIのクラスではなく、ジェネリッククラスを使え
項目2 制約は必要最小限にして十分なものを定義せよ
項目3 実行時型チェックを使ってジェネリックアルゴリズムを特化せよ
項目4 ジェネリックを使ってコンパイル時型インターフェイスを強制せよ
項目5 ジェネリッククラスはIdisposableを実装すつ型のパラメータのサポートを忘れるな
項目6 型パラメータのメゾット制約の定義にはデリケートを使え
項目7 基底クラスやインターフェイスのためにジェネリックな特別バージョンを書くな
項目8 型パラメータがインスタンスフィールドでない限り、ジェネリックメゾットを選べ
項目9 out、ref引数よりもジェネリックとともに古いインターフェイスも実装せよ
第2章 C#におけるマルチスレッド
項目11 スレッドを作らずにスレッドプールを使え
項目12 スレッド間通信のためにBackgraoundWorkerを利用せよ
項目13 同期のためにまxずlook()を使え
項目14 ロックハンドルのためにはできる限り小さなスコープを使え
項目15 ロックハンドルされたセクションからは未知のコードを呼び出すな
項目16 Windows フォームとWPFのスレッド間呼び出しを理解せよ
第3章 C#の設計実践
項目17 シーケンスのためには合成でできるAPIを作れ
項目18 アクション、述語、関数から反復処理を切り離せ
項目19 シーケンスの要素は要求されたときに生成せよ
項目20 関数引数を使って結合を緩めよ
項目21 メゾットグループは明快で完全な定義を優先せよ
項目22 演算子の多重定義よりもメゾットの定義を優先せよ
項目23 イベントはオブジェクトを実行時に密結合することを理解せよ
項目24 イベントはvirtual宣言するな
項目25 例外はメゾットの約束ごとが守られなかったときに使え
項目26 プロパティはデータらしくふるまうように作れ
項目27 継承と合成を区別せよ
第4章 C#3.0の新機能
項目28 拡張メゾットでインターフェイスの最小限の約束を補え
項目29 拡張メゾットでクローズジェネリック型を拡張せよ
項目30 ローカル変数ではできる限り暗黙の型付けに委ねよ
項目31 無名型を使って型のスコープを制限せよ
項目32 外部コンポーネントに対する合成可能APIを作れ
項目33 束縛変数の変更を避けよ
項目34 無名型を使ってローカル関数を定義せよ
項目35 拡張メゾットを多重定義してはならない
第5章 LINQの操作
項目36 クエリ式からメゾット呼び出しへの変換がどのように行われるかを理解せよ
項目37 遅延評価クエリーを使うようにせよ
項目38 メゾットよりもラムダ式を使うようにせよ
項目39 関数やアクションで例外を投げるな
項目40 遅延実行と先行実行を区別せよ
項目41 高価なリソースを抱えこまないようにせよ
項目42 IenumerableデータソースとIquertableデータソースを区別せよ
項目43 Single()とFlash()を使ってクエリのセマンティックスを指定せよ
項目44 Func<>ではなくExpression<>を格納するようにせよ
第6章 その他
項目45 null許容値のスコープはできるだけ狭くせよ
項目46 コンストラクタ、ミューテータ、イベントハンドラのために部分クラス、部分メゾットを使え
項目47 配列引数を使わず、Params配列を使え
項目48 コンストラクタで仮想関数を呼び出すのを避けよ
項目49 大規模なオブジェクトでは弱参照を検討せよ
項目50 ミュータブルでシリアライズできないデータは自動実装プロパティにせよ
索引
本書は付属データの提供はございません。
書籍に関する問い合わせ
正誤表、追加情報をご確認の上、こちらよりお問い合わせください
利用許諾に関する問い合わせ
本書の書影(表紙画像)の利用許諾申請はこちらになります
書影(表紙画像)以外の利用許諾については、「書籍に関する問い合わせ」をご利用ください
追加情報はありません。
正誤表の登録はありません。