裏口からのC# 実践入門
―バッドノウハウを踏み越えて本物へ!!

[表紙]裏口からのC# 実践入門 ―バッドノウハウを踏み越えて本物へ!!

紙版発売
電子版発売

A5判/320ページ

定価2,948円(本体2,680円+税10%)

ISBN 978-4-7741-6816-6

電子版

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

比較的使いやすいために,現在,開発現場においては主流のひとつと言って過言ではないC#でも,入門を果たした後でコーディングの力を磨くためには,多くの場合,自ら失敗を繰り返す必要があります。しかし,そういう無駄は誰しも省きたいものです。失敗にはパターンがあり,分類可能な,類型化できる原因があります。そういった実際によく発生する事例をタイプ別・原因別に提示し,何がいけなかったのか,本当はどうすべきか,それをどう改良すればいいかなど,現役のプログラマーに必要な知恵を授けることを本書は目的としています。

こんな方におすすめ

  • 開発に携わっているC#プログラマー
  • 一般のC#入門書は読んだが実践にあたって自信がない初心者プログラマー

目次

オープニング

シーン1 言語仕様の問題

  • 1.1 varの忌避
  • 1.2 ifとswitchの誤用
  • 1.3 forとforeachの誤用
  • 1.4 whileで条件判断
  • 1.5 doのほうがよいのに使わない問題
  • 1.6 ループする必要のないループ
  • 1.7 冗長な非同期ループ
  • 1.8 解放されない参照
  • 1.9 解放したつもりのメモリ
  • 1.10 過剰に表現力がありすぎる型の利用
  • 1.11 過剰に表現力が不足しすぎる型の利用
  • 1.12 意味がない構造体の利用
  • 1.13 ポインタの利用
  • 1.14 無駄なキャストの多用
  • 1.15 全部1クラス症候群
  • 1.16 全部public症候群
  • 1.17 全部static症候群
  • 1.18 using文を使わない症候群
  • 1.19 Mixed Language Programmingを知らない
  • 1.20 constが使えるケースで普通の変数を使う
  • 1.21 readonlyが使えるケースで普通の変数を使う
  • 1.22 列挙型を使わないで定数を定義する
  • 1.23 無駄に深いクラス階層
  • 1.24 別の名前空間での同じ名前の多用
  • 1.25 多すぎる引数
  • 1.26 付けすぎるvirtual
  • 1.27 ソースコードにパスワードを直書きする
  • 1.28 例外を処理しないのにcatchする
  • 1.29 catchして何もせずそのままthrowする
  • 1.30 何の役割もない継承を繰り返す
  • 1.31 委譲すべきケースで継承する
  • 1.32 短すぎる名前の問題
  • 1.33 長すぎる名前の問題
  • 1.34 記号的な名前の問題

シーン2 ライブラリの問題

  • 2.1 旧世代のコレクションを使う
  • 2.2 コレクションを返す
  • 2.3 WinFormsへの固執
  • 2.4 Windows APIの直接呼び出し
  • 2.5 古いXML DOM
  • 2.6 古いXSLT
  • 2.7 独自形式バイナリーへのシリアライズ
  • 2.8 過剰な例外への依存
  • 2.9 XElementがNullableにキャスト可能と知らない
  • 2.10 MVCでViewにロジックを書く
  • 2.11 ループとロジックが入り交じっている
  • 2.12 それはリソースの無駄遣い
  • 2.13 Javaよ安らかに眠れ

シーン3 環境の問題

  • 3.1 GACに入れたがる症候群
  • 3.2 Ngenに依存する症候群
  • 3.3 新しすぎるランタイムのバージョン
  • 3.4 古すぎるランタイムのバージョン

シーン4 アルゴリズムの問題

  • 4.1 再帰に頼りすぎ
  • 4.2 不変ではないクラス
  • 4.3 散在する情報
  • 4.4 多すぎるクエリ
  • 4.5 冗長な判定
  • 4.6 ユニークさが確保されているのに判定する
  • 4.7 ユニークさが確保されていないのに判定しない
  • 4.8 永遠に実行されないコード
  • 4.9 異常ケースで致命的な処理を止めないコード
  • 4.10 無効値を多発するデータ設計

シーン5 Visual Studioの問題

  • 5.1 便利な拡張機能を入れない問題
  • 5.2 便利な拡張機能を入れすぎる問題
  • 5.3 !キーを使わない問題
  • 5.4 !キーに依存しすぎる問題
  • 5.5 NuGetを使わない問題
  • 5.6 NuGetが使えない問題
  • 5.7 適切なバージョンのテンプレートが選べない問題
  • 5.8 とりあえずコンソールアプリという問題

フィナーレ