Code Craft プレミアムブックス版 エクセレントなコードを書くための実践的技法

  • mixiチェック
  • このエントリーをはてなブックマークに追加

内容紹介

コードを書く職人であるために。

多くのプログラマーは、正しいコード、つまり、動作するコードを書く方法は知っています。しかし、エクセレントなコード、つまり、うまく書かれていて、理解することが容易なコードを巧妙に作り上げる方法を知っているとは限りません。本書は、自分の仕事にこだわりを持つプログラマーを対象に、まだ誰もあなたに教えてくれていないことが書かれています。それは、この現実の世界でプログラムをどのように正しく書くかということです。

本書では、教科書が省いた部分を拾い上げます。もちろん、それは良いコードが持つ技術的かつ専門的な性質や複雑さに関することです。しかし、それだけにとどまらず、正しいコードを正しいやり方で書く方法に関することも含まれます。また、良いプログラマーと悪いプログラマーとを分ける「姿勢」についても言及します。
具体的には、「ソースコードの見栄え」「防御的コーディング手法」「プログラムを効果的にデバッグする方法」「上手な共同作業のスキル」「ソースコードの管理」といったトピックを詳しく取り上げています。さらに、プログラマーの「姿勢」や取り組みといった「プログラマーの実態」(さまざまなコードモンキー)、仕様書の作成、コードレビューの実施、期間見積もりの黒魔術などの「ソフトウェア開発プロセス」、そして、「ソフトウェア開発の方法論」「さまざまなプログラミングの規律」などの、より高度な開発プロセスについても触れています。
何より「自分の頭で考える」ことが重要ですが、各章末にはQ&Aセクションがあり、教科書として使用することも可能になっています。

本書は、『Code Craft』(2007年12月日本語版刊行)の復刊です。

続きを読む

商品を選択する

フォーマット 価格 備考
書籍(受注生産) 9,612 受注生産のため、決済完了から約10日後の発送となります。
PDF 6,728 ※当商品は発送を伴いません。ご購入後、「マイページ」からPDFをダウンロードしてください。
※2014/09/19:ファイルを更新しました。購入済みの方はマイページから再ダウンロードをお願いします。

電子書籍フォーマットについて

  

備考

●Pete Goodliffe
ソフトウェア開発の専門家としてソフトウェア産業のいくつもの職場を渡り歩き、さまざまなプロジェクトで数多くの言語を扱ってきた。また、プログラマーの教育と指導にも幅広い経験を持ち、ACCUの『C Vu』誌で「Professionalism in Programming(プログラミングにおけるプロ意識)」という定期コラムを書いている。子供と遊ぶ時間をもっと増やせるように、質が高くてバグのないコードを書くことを楽しんでいる。

目次

第1部 コードと向き合う
 第1章 守りを固める
  1.1  優れたコードを目指して
  1.2  最悪を想定する
  1.3  防御的プログラミングとは何か
      否定論の論拠
      肯定論の論拠
  1.4  広大で邪悪な世界.
  1.5  防御的プログラミングの技法
      望ましいコーディングスタイルと適正な設計を採用する
      コーディングを急がない
      誰も信用しない
      簡潔性よりも明瞭性を重視してコードを書く
      内部的な要素をユーザーに触らせない
      すべての警告をオンにしてコンパイルする
      静的解析ツールを使用する
      安全なデータ構造を使用する
      すべての戻り値をチェックする
      メモリ(およびその他の貴重なリソース)を注意深く扱う
      すべての変数は宣言時に初期化する
      変数の宣言はできるだけ変数を使用する直前に行う
      言語の標準機能を使用する
      有用な診断ログの機能を活用する
      キャストは慎重に行う
      その他の細かい注意点
  1.6  制約
      制約の対象
      制約の除去
  一言で言えば
  関連項目
  考えてみよう
      熟考しよう
      我が身を振り返ってみよう
 
 第2章 見事に描かれた設計図
  2.1  なぜ表記スタイルは重要なのか
  2.2  コードを書き示す相手を知る
  2.3  優れた表記スタイルとは何か
  2.4  さまざまな中カッコスタイル
      K&Rの中カッコスタイル
      中カッコを逆インデントするスタイル
      中カッコをインデントするスタイル
      その他の中カッコスタイル
  2.5  1つのスタイルですべてを規定する
  2.6  社内スタイル(およびそれを適用すべき対象)
  2.7  コーディング規約を定める
  2.8  正義の戦い?
  一言で言えば
  関連項目
  考えてみよう
      熟考しよう
      我が身を振り返ってみよう
 
 第3章 名前の意義
  3.1  適切な名前を付けることの重要性
  3.2  名前を付ける対象
  3.3  名前ゲーム
        説明的である
        技術的に正しい
        イディオムに従っている
        適切である
  3.4  実践的な名前付けの要点
        変数の名前付け
        関数の名前付け
        型の名前付け
        名前空間の名前付け
        マクロの名前付け
        ファイルの名前付け
  3.5  バラの香りも名前次第
        一貫性を保つ
        コンテキストを利用する
        自分の目的に合わせて名前を活用する
  一言で言えば
  関連項目
  考えてみよう
      熟考しよう
      我が身を振り返ってみよう
 
 第4章 必要な情報を余さず書く
  4.1  自己解説的コード
  4.2  自己解説的コードを書くための手法
      適切な表記スタイルで単純なコードを書く
      意味のある名前を選ぶ
      コードをアトミックな関数に分解する
      制約や振る舞いを表す説明的な型を選ぶ
      定数に名前を付ける
      重要なコードを強調する
      関連のある情報をグループ化する
      ファイルヘッダを記述する
      エラーを適切に処理する
      意味のあるコメントを書く
  4.3  自己解説的コードの実践的方法論
      文芸的プログラミング
      ドキュメント作成ツール
  一言で言えば
  関連項目
  考えてみよう
      熟考しよう
      我が身を振り返ってみよう
 
 第5章 的確なコメント
  5.1  コードコメントとは何か
  5.2  コメントはどのように記述・表示されるか
  5.3  どのくらいの数のコメントを書くべきか
  5.4  コメントの内容として何を書くべきか
      方法ではなく理由を説明する
      コードの内容を言い換えただけの説明は避ける
      コメントをコードの代用にしない
      役に立つコメントを書く
      コードの理解に不要な要素を排除する
  5.5  コードの改善例
  5.6  コメントの表記に関する留意点
      一貫性
      明瞭なブロックコメント
      コメントのインデント
      行末のコメント
      コードを読みやすくする
      保守の負担が軽いスタイルを選ぶ
      防波堤
      フラグ
      ファイルヘッダとしてのコメント
  5.7  コメントを活用するための注意
      ルーチンを書くためのコメント
      バグ修正の通知
      コメントの劣化
      保守段階のコードの無意味なコメント
  一言で言えば
  関連項目
  考えてみよう
      熟考しよう
      我が身を振り返ってみよう
 
 第6章 過ちは人の常
  6.1  エラーは何から生まれるのか
  6.2  エラー通知機構
      通知なし
      戻り値
      エラーステータス変数
      例外
      シグナル
  6.3  エラーを検出する
  6.4  エラーを処理する
      いつエラーを処理すべきか
      可能な対処
      エラー処理がコードに及ぼす影響
  6.5  エラーを発生させる
  6.6  エラーに対処する
  一言で言えば
  関連項目
  考えてみよう
      熟考しよう
      我が身を振り返ってみよう
 
第2部 コードの秘められた生活
 第7章 プログラマーの道具箱
  7.1  ソフトウェアツールとは何か
  7.2  なぜツールのことを気にするのか
  7.3  パワーツール
      何ができるのかを把握する
      操作方法を学ぶ
      どんな作業に適しているのかを見極める
      きちんと機能しているかをチェックする
      詳しい情報のソースを突き止める
      新しいバージョンのリリース時期を知る
  7.4  どのツールにするか
      ソース編集ツール
      コード構築ツール
      デバッグツールと調査ツール
      言語サポートツール
      その他のツール
  一言で言えば
  関連項目
  考えてみよう
      熟考しよう
      我が身を振り返ってみよう
 
 第8章 テスト
  8.1  現実性チェック
  8.2  誰が、何を、いつ、なぜ
      なぜテストするのか
      誰がテストするのか
      テストに何が必要か
      いつテストするのか
  8.3  テストは難しくない……
  8.4  テストの種類
  8.5  単体テストケースの選択
  8.6  テストを考慮した設計
  8.7  ほら、両手放しだよ!
  8.8  障害の外観
  8.9  欠陥を管理できるか
      フォールトトラッキングシステム
      バグレビュー
  一言で言えば
  関連項目
  考えてみよう
      熟考しよう
      我が身を振り返ってみよう
 
 第9章 誤りの検出
  9.1  避けがたい現実
  9.2  野獣の本性
      1,000フィートからの眺め
      地上からの眺め
      塹壕からの眺め
  9.3  害虫駆除
      横道
      正道
  9.4  バグハンティング
      コンパイルエラー
      ランタイムエラー
  9.5  欠陥の修正方法
  9.6  予防策
  9.7  スズメバチスプレー、ナメクジ除け、ハエ取り紙
      デバッガ
      メモリアクセスバリデータ
      システムコールトレース
      コアダンプ
      ロギング
  一言で言えば
  関連項目
  考えてみよう
      熟考しよう
      我が身を振り返ってみよう
 
 第10章 アイツがビルドしたコード
  10.1 言語の壁
      インタープリタ言語
      コンパイル言語
      バイトコンパイル言語
  10.2 ちょっと大げさな話ですが
  10.3 ビルドをビルドする
  10.4 良いビルドシステムの条件
      単純
      統一性
      反復可能で信頼できる
      アトミック
      エラーへの対処
  10.5 仕組み
      ターゲットの選択
      ハウスキーピング
      依存関係
      自動化されたビルド
      ビルド設定
      再帰make
  10.6 リリース
  10.7 ビルドマスターのお仕事
  一言で言えば
  関連項目
  考えてみよう
      熟考しよう
      我が身を振り返ってみよう
 
 第11章 速さを追い求める
  11.1 最適化とは何か?
  11.2 最適ではないコードが生じる原因
  11.3 最適化を行うべきではない理由
      最適化に代わる手段
  11.4 最適化を行うべき理由
  11.5 実践的な最適化のアプローチ
      最適化の必要性を証明する
      最も低速なコードを特定する
      コードをテストする
      コードを最適化する
      最適化の効果を検証する
  11.6 最適化の手法
      設計の変更
      コードの変更
  11.7 効率的なコードを書く
  一言で言えば
  関連項目
  考えてみよう
      熟考しよう
      我が身を振り返ってみよう
 
 第12章 不安の固まり
 
  12.1 リスク
  12.2 敵を知る
  12.3 戦況
  12.4 脆弱性の種類
      セキュアではない設計とアーキテクチャ
      バッファオーバーラン
      クエリ文字列の埋め込み
      競合状態
      整数オーバーフロー
  12.5 保護の手段
      システムのインストール環境での対策
      ソフトウェア設計での対策
      コード実装での対策
      使用手順による対策
  一言で言えば
  関連項目
  考えてみよう
      熟考しよう
      我が身を振り返ってみよう
 
第3部 コードの形態
 第13章 グランドデザイン
  13.1 プログラミングの設計としての側面
  13.2 何を設計するのか?
  13.3 どうしてそんなに騒ぐのか?
  13.4 優れたソフトウェア設計
      単純であること
      エレガントであること
      モジュール性
      優れたインターフェイス
      拡張性
      重複の回避
      移植性
      慣用語法
      文書化
  13.5 コードの設計方法
      設計のための手法やプロセス
      設計の道具
  一言で言えば
  関連項目
  考えてみよう
      熟考しよう
      我が身を振り返ってみよう
 
 第14章 ソフトウェアアーキテクチャ
  14.1 ソフトウェアアーキテクチャとは?
      ソフトウェアの青写真
      視点
      いつどこに記述するか?
      何のために使うのか?
      コンポーネントと接続について
  14.2 優れたアーキテクチャとは?
  14.3 アーキテクチャのスタイル
      アーキテクチャなし
      階層アーキテクチャ
      パイプとフィルタを使ったアーキテクチャ
      クライアント/サーバアーキテクチャ
      コンポーネントベースのアーキテクチャ
      フレームワーク
  一言で言えば
  関連項目
  考えてみよう
      熟考しよう
      我が身を振り返ってみよう
 
 第15章 進化か革命か?
  15.1 ソフトウェアの老朽
  15.2 警告のサイン
  15.3 コードはどう成長するか?
  15.4 そんなことあり得ないのに
  15.5 これに関して何ができるか?
      コードを新規に書く場合
      既存のコードを保守する場合
  一言で言えば
  関連項目
  考えてみよう
      熟考しよう
      我が身を振り返ってみよう
 
第4部 プログラマーの群れ
 第16章 コードモンキー
  16.1 モンキービジネス
      直情的プログラマー
      コードモンキー
      グル
      似非グル
      高慢な秀才
      カウボーイ
      プランナー
      古株
      狂信者
      一意専心プログラマー
      サボり屋
      メランコリックチームリーダー
      あなた
  16.2 理想的プログラマー
  16.3 それで?
  16.4 最も愚かな者
  一言で言えば
  関連項目
  考えてみよう
      熟考しよう
      我が身を振り返ってみよう
 
 第17章 チームの力
  17.1 チームの概略
  17.2 チーム編成
      管理手法
      責任分担
      編成とコードの構造
  17.3 チームワークのためのツール
  17.4 チームを襲う病魔
      バベルの塔
      独裁制
      民主主義型開発
      サテライトステーション
      グランドキャニオン
      泥沼
      レミングス
  17.5 優れたチームワークのための個人のスキルと特質
      コミュニケーション
      謙虚さ
      対立への対処
      習得と適応性
      自分の限界の把握
  17.6 チームワークの基本原則
      コードの共同所有
      他人のコードに対する尊敬の念
      コーディングガイドライン
      成功の定義
      責任の定義
      燃え尽きの回避
  17.7 チームの一生
      チームの誕生
      チームの成長
      チームワーク
      チームの終焉
  一言で言えば
  関連項目
  考えてみよう
      熟考しよう
      我が身を振り返ってみよう
 
 第18章 ソースを安全に扱う方法
  18.1 私たちの責務
  18.2 ソース管理
      リビジョン管理
      アクセス制御
      リポジトリの扱い方
      ブランチの活用
      ソース管理の略歴
  18.3 構成管理
  18.4 バックアップ
  18.5 ソースコードのリリース・公開
  18.6 ソースの置き場所
  一言で言えば
  関連項目
  考えてみよう
      熟考しよう
      我が身を振り返ってみよう
 
第5部 ソフトウェア開発プロセス
 第19章 仕様の具体化
  19.1 具体的に言うと何?
  19.2 仕様書の種類
      要求仕様書
      機能仕様書
      構造仕様書
      ユーザーインターフェイス仕様書
      設計仕様書
      テスト仕様書
  19.3 仕様書に盛り込むべき内容は?
  19.4 仕様書執筆手順
  19.5 なぜ仕様書を書かないのか?
  一言で言えば
  関連項目
  考えてみよう
      熟考しよう
      我が身を振り返ってみよう
 
 第20章 美しき獲物たちか?
  20.1 コードレビューとは
  20.2 いつレビューするか
      レビューするかどうか
      どのコードをレビューするか
  20.3 コードレビューの実施
      コードレビューミーティング
      統合レビュー
  20.4 心構えをレビューする
      作者の心構え
      レビュー担当者の心構え
  20.5 完全なるコード
  20.6 コードレビューの向こうにあるもの
  一言で言えば
  関連項目
  考えてみよう
      熟考しよう
      我が身を振り返ってみよう
 
 第21章 完了日は未定
  21.1 暗闇での一突き
  21.2 見積もりが難しい理由
  21.3 プレッシャー
  21.4 見積もりの実際的な方法
  21.5 計画ゲーム
  21.6 間に合わせる
  一言で言えば
  関連項目
  考えてみよう
      熟考しよう
      我が身を振り返ってみよう
 
第6部 頂上からの眺め
 第22章 プログラムのレシピ
  22.1 プログラミングスタイル
      構造化プログラミング
      オブジェクト指向プログラミング
      関数型プログラミング
      論理型プログラミング
  22.2 レシピ:方法と目的
  22.3 開発プロセス
      アドホック
      ウォーターフォールモデル
      SSADMとPRINCE 
      Vモデル
      プロトタイピング
      イテレーティブおよびインクリメンタル開発
      スパイラルモデル
      アジャイル手法
      その他の開発プロセス
  22.4 もう十分!
  22.5 開発プロセスの選択
  一言で言えば
  関連項目
  考えてみよう
      熟考しよう
      我が身を振り返ってみよう
 
 第23章 アウターリミッツ
  23.1 アプリケーションプログラミング
      パッケージソフトウェア
      カスタムアプリケーション
  23.2 ゲームプログラミング
  23.3 システムプログラミング
  23.4 組み込みプログラミング
  23.5 分散プログラミング
  23.6 Webアプリケーションプログラミング
  23.7 エンタープライズプログラミング
  23.8 数値計算プログラミング
  23.9 まとめ
  一言で言えば
  関連項目
  考えてみよう
      熟考しよう
      我が身を振り返ってみよう
 
 第24章 次の行き先は?
  24.1 これからどうするか
 
答えと解説
 

この商品を買った人はこんな商品も買っています


最近チェックした商品

Tポイント利用手続き

         Tポイント利用手続きに関する同意事項

                                株式会社マイナビ出版

株式会社マイナビ出版が提供するマイナビBOOKSにおいてTポイントご利用続きをされる方は、以下に掲げるお客様の個人情報の取り扱いについてご確認の上、ご同意下さい。

マイナビBOOKSにおいてTポイントサービスをご利用いただいた場合に、当社から、次に掲げる<提供情報>を、<提供目的>のためにカルチュア・コンビニエンス・クラブ株式会社(以下「CCC」といいます)へ提供します。

  <提供目的>:CCCの定める個人情報保護方針及びマイナビBOOKSにおけるT会員規約第4条に定める利用目的で利用するためTポイントサービスを利用するため
  <提供情報>:
   1)お客様が【マイナビBOOKS】の正当な利用者であるという情報
   2)ポイント数・利用日
   3)その他、Tポイントサービスを利用するにあたり必要な情報

  <提供方法>: 電磁的記録媒体の送付またはデータ通信による。ただし、提供するデータについては暗号化を施すものとする。

なお、CCCに提供された、以下の情報の利用については、CCCの定める個人情報保護方針及びT会員規約 に沿って取り扱われます。
上記の情報提供の停止をご希望される場合には、【マイナビBOOKS】におけるTポイント利用手続きの解除を実施していただく必要があります。
Tポイント利用手続きの解除、およびTポイントサービスにおける個人情報に関するお問い合わせ先は、以下のとおりです。
お客様お問い合わせ先:Tサイト(http://qa.tsite.jp/faq/show/22612)

 なお、Tポイント利用手続きの解除が完了しますと、マイナビBOOKSにおけるTポイントサービスをご利用いただけなくなりますので、予めご了承ください。

Tポイント利用手続きを行いますか?