Effective C# 6.0/7.0(Bill Wagner 鈴木 幸敏 鈴木 幸敏)|翔泳社の本
  1. ホーム >
  2. 書籍 >
  3. Effective C# 6.0/7.0

Effective C# 6.0/7.0


監修
翻訳

形式:
書籍
発売日:
ISBN:
9784798153865
定価:
3,520(本体3,200円+税10%)
仕様:
B5変・244ページ
カテゴリ:
プログラミング・開発
キーワード:
#プログラミング,#開発環境,#開発手法,#Web・アプリ開発
紙の書籍

ジェネリスクとLINQを中心に、
C#プログラムを高速で洗練されたものにする50の方法。

スコット・メイヤー監修によるEffectiveシリーズ待望のC#第3版。

C#を使った開発時に、躓きがちな問題点、
・高速化
・効率化
・可読性の向上
・メンテナンス性の向上
・最新機能を盛り込みつつ、後方互換も取らなければならない
・API設計指針
などの解決策を、豊富な実例とともに詳解しています。

単なるサンプルコードの提示だけに留まらず、
「どう違うのか」「なぜそうするのか」「これによって何が得られるのか」を実例による検証とともに解説しています。


[著者について]
Bill Wagnerは、もっとも重要なC#開発者の1人であり、ECMA C# Standards Committeeのメンバーである。
彼はHumanitarian ToolboxのPresidentであり、Microsoft Regional Directorの役職を持ち、
.NET MVPを11年受賞し、最近では.NET Foundation Advisory Councilに任命されている。
Billは新事業から大企業まで数多くの会社で働き、ソフトウェア開発のプロセスを改善し、
それらのソフトウェア開発チームを成長させてきた。現在はMicrosoftの.NETのCore contentチームに勤め、
C#言語と.NET Coreに関心のある開発者のために学習用のマテリアルを作っている。
Billはイリノイ大学アーバナ・シャンペーン校でコンピュータサイエンスの学士号を授かっている。

第1章 C#言語イディオム
  項目 1 ローカル変数の型をなるべく暗黙的に指定すること
  項目 2 constよりもreadonlyを使用すること
  項目 3 キャストにはisまたはasを使用すること
  項目 4 string.Format() を補間文字列に置き換える
  項目 5 カルチャー固有の文字列よりもFormattableStringを使用すること
  項目 6 文字列指定のAPIを使用しないこと
  項目 7 デリゲートを使用してコールバックを表現する
  項目 8 イベントの呼び出し時にnull条件演算子を使用すること
  項目 9 ボックス化およびボックス化解除を最小限に抑える
  項目10 親クラスの変更に応じる場合のみnew修飾子を使用すること

第2章 リソース管理
  項目11 .NETのリソース管理を理解する
  項目12 メンバには割り当て演算子よりもオブジェクト初期化子を使用すること
  項目13 staticメンバを適切に初期化すること
  項目14 初期化ロジックの重複を最小化する
  項目15 不必要なオブジェクトの生成を避けること
  項目16 コンストラクタ内では仮想メソッドを呼ばないこと
  項目17 標準的なDisposeパターンを実装する

第3章 ジェネリックによる処理
  項目18 最低限必須となる制約を常に定義すること
  項目19 実行時の型チェックを使用してジェネリックアルゴリズムを特化する
  項目20 IComparableとIComparerにより順序関係を実装する
  項目21 破棄可能な型引数をサポートするようにジェネリック型を作成すること
  項目22 ジェネリックの共変性と反変性をサポートする
  項目23 型パラメータにおけるメソッドの制約をデリゲートとして定義する
  項目24 親クラスやインターフェイス用に特化したジェネリックメソッドを作成しないこと
  項目25 型引数がインスタンスのフィールドではない場合にはジェネリックメソッドとして定義すること
  項目26 ジェネリックインターフェイスとともに古いインターフェイスを実装すること
  項目27 最小限に制限されたインターフェイスを拡張メソッドにより機能拡張する
  項目28 構築された型に対する拡張メソッドを検討すること

第4章 LINQを扱う処理
  項目29 コレクションを返すメソッドではなくイテレータを返すメソッドとすること
  項目30 ループよりもクエリ構文を使用すること
  項目31 シーケンス用の組み合わせ可能なAPIを作成する
  項目32 反復処理をAction, Predicate, Funcと分離する
  項目33 要求に応じてシーケンスの要素を生成する
  項目34 関数引数を使用して役割を分離する
  項目35 拡張メソッドをオーバーロードしないこと
  項目36 クエリ式とメソッド呼び出しの対応を把握する
  項目37 クエリを即時評価ではなく遅延評価すること
  項目38 メソッドよりもラムダ式を使用すること
  項目39 FuncやAction内では例外をスローしないこと
  項目40 即時実行と遅延実行を区別すること
  項目41 コストのかかるリソースを維持しつづけないこと
  項目42 IEnumerableとIQueryableを区別すること
  項目43 クエリに期待する意味をSingle()やFirst()を使用して表現すること
  項目44 束縛した変数を変更しないこと

第5章 例外処理
  項目45 契約違反を例外として報告すること
  項目46 usingおよびtry...finallyを使用してリソースの後処理を行う
  項目47 アプリケーション固有の例外クラスを作成する
  項目48 例外を強く保証すること
  項目49 catchからの再スローよりも例外フィルタを使用すること
  項目50 例外フィルタの副作用を活用する

本書は付属データの提供はございません。

お問い合わせ

内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。

正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。

利用許諾に関するお問い合わせ

本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。

追加情報はありません。
この商品の「よくある質問」はありません。

ご購入いただいた書籍の種類を選択してください。

書籍の刷数を選択してください。

刷数は奥付(書籍の最終ページ)に記載されています。

現在表示されている正誤表の対象書籍

書籍の種類:

書籍の刷数:

本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。

対象の書籍は正誤表がありません。

最終更新日:2021年06月29日
発生刷 ページ数 書籍改訂刷 電子書籍訂正 内容 登録日
1刷 012
2つめの囲みのコード 6行目~最終行
2刷
  MyType t;   t = (MyType)o;   // MyType型の変数 t を使った作業 } catch (InvalidCastException) {   // 処理の失敗を通知する }
  t = (MyType)o; // Fails. o is not MyType   if (t != null)   {     // MyType型の変数tを使った作業   } } catch (InvalidCastException) {   // report the conversion failure. }

※リフローEPUBの場合、第1章「項目3 キャストにはisまたはasを使用すること」の2つ目のコードが該当箇所になります。
2021.06.29
1刷 023
コード内 3行目、11行目
2刷
return string.Format(null,
return string.Format(

※リフローEPUBの場合、第1章「項目5 カルチャ固有の文字列よりもFormattableStringを使用すること」の4つ目のコードが該当箇所になります。
2021.06.29
1刷 038
1つめの囲みのコード下から3行目、2つめの囲みのコード下から3行目
2刷
base.Normalizevalues();
base.NormalizeValues();

「v」を大文字にします。

※リフローEPUBの場合、第1章「項目10 親クラスの変更に応じる場合のみnew修飾子を使用すること」の5つ目、6つ目のコードが該当箇所になります。
2021.06.29
1刷 113
2つめの囲みのコード 下から2行目
2刷
return left.CompareTo(right) < 0;
return left.CompareTo(right) > 0;

不等号の向きを逆にします。

※リフローEPUBの場合、第3章「項目26 ジェネリックインターフェイスとともに古いインターフェイスを実装すること」の8つ目のコードが該当箇所になります。
2021.06.29

感想・レビュー

miwarin さん

2020-04-01

C♯でのイディオムやアンチパターン。ジェネリックや例外処理など。細かすぎて頭に入り切らない

いえっさ さん

2022-01-30

C#の基本的な仕様をわかっている人向けのテクニック本 コードの再利用性、安全性を高めるのに役立つ方法が豊富に書かれていてC#をやるなら必読の本 C#の言語仕様をより深く理解できるような解説も含まれている

fjt7tdmi さん

C# をより深く理解するためにオススメの一冊です。