http://www.gihyo.co.jp/books/syoseki.php/4-7741-1797-8
C言語 入門書の次に読む本
坂井弘亮 著 / A5判 / 400ページ
ISBN4-7741-1797-8 / 2003年8月2日発売
定価2604円(本体2480円)
1 基本的なスタイル
1.1 スタイルとは
1.2 分割コンパイルとリンク
1.2.1 なぜ分割するのか
1.2.2 1人で開発する場合にも利点はあるのか
1.2.3 分割の方法
1.2.4 分割の例
1.2.5 コンパイラの動作
1.2.6 名前の衝突
1.3 宣言
1.3.1 関数の暗黙の宣言
1.3.2 関数のプロトタイプ宣言
1.3.3 分割コンパイルへの応用
1.3.4 static接頭語
1.3.5 extern接頭語
1.3.6 変数の場合
1.3.7 まとめと問題点
1.4 ヘッダファイルの作成
1.4.1 ヘッダファイルとは
1.4.2 基本的な作り方
1.4.3 作成の例
1.4.4 作成の指針
1.4.5 voidの利用
1.4.6 enumの利用
1.4.7 constの利用
1.4.8 constを引数として利用
1.4.9 constで注意すべきこと
1.4.10 バグの例
2 ライブラリの作成
2.1 なぜライブラリを作成するのか
2.2 ヘッダファイルの作り方
2.2.1 マクロの定義
2.2.2 定数の定義
2.2.3 構造体、共用体の定義
2.2.4 型の定義
2.2.5 関数のプロトタイプ宣言
2.2.6 グローバル変数のextern宣言
2.2.7 他のライブラリにおけるヘッダファイルのインクルード
2.2.8 多重インクルードの問題
2.3 ライブラリの本体の作り方
2.3.1 マクロ、定数、構造体、共用体、型の定義
2.3.2 外部に公開する関数、グローバル変数の本体
2.3.3 外部に公開しない関数や広域変数の本体
2.3.4 ライブラリのヘッダファイルのインクルード
2.3.5 他のライブラリのヘッダファイルのインクルード
2.4 Makefile
2.5 乱数発生用ライブラリの作成
2.5.1 仕様
2.5.2 ライブラリのリスト
2.5.3 使用例
2.6 発展した話題
2.6.1 構造体のメンバの隠蔽
2.6.2 パブリックヘッダファイルとプライベートヘッダファイル
3 設計
3.1 アルゴリズム
3.1.1 アルゴリズムと設計
3.1.2 線形検索
3.1.3 学習
3.1.4 ハッシュ
3.2 データ構造
3.2.1 配列
3.2.2 リンクリスト
3.3 設計の例
3.4 メモリ管理用ライブラリの作成
3.4.1 ライブラリの概要
3.4.2 データ構造の設計
3.4.3 ライブラリのリスト
3.4.4 動作確認
4 バグを出さないために
4.1 ツールの利用
4.2 バグを発生させないコーディング
4.2.1 1つのローカル変数を複数の目的に使用しない
4.2.2 関数の引数を別の用途に利用しない
4.2.3 malloc()とfree()は近くに書く
4.2.4 構造体は作成すると同時に初期化する
4.2.5 関連のあるコードは近くに置く
4.2.6 ポインタのNULLクリア
4.2.7 キャストは少なく
4.2.8 キャストは多く
4.2.9 名前の付け方を統一する
4.2.10 sizeof(char)の明示
4.2.11 チェックしやすい書き方を選択
4.2.12 意図の伝わらない書き方はしない
4.2.13 良く考えて書く
4.3 バグ発生後に対処しやすいコーディング
4.3.1 解放したらNULLクリアする
4.3.2 関数の先頭で引数のチェックを行う
4.4 調査のためのコーディング
4.4.1 関連のあるものは、1つのディレクトリにまとめる
4.4.2 関数を複数行に分けない
4.4.3 grepでの検索を意識する
4.4.4 自作ツールの利用を意識する
4.5 すぐに修正/確認ができること
4.5.1 中括弧を省略しない
4.5.2 returnは1箇所でまとめる
4.5.3 似た処理は1箇所にまとめる
4.5.4 すぐに確認を行う
4.6 将来性があること
4.6.1 ブロックのネストを深くしない
4.6.2 gotoの利用をためらわない
4.7 コーディング時に気をつけること まとめ
4.7.1 楽すること
4.7.2 癖づけ
4.7.3 他人のことを考える
4.7.4 規格や文法を過信しない
4.7.5 ANSI規格
5 デバッグ
5.1 デバッグコード
5.1.1 abort()、assert()の利用
5.1.2 syslog()
5.1.3 ログの出力
5.1.4 チェックコード
5.1.5 デバッグレベル
5.2 エラー処理
5.2.1 エラー処理は関数の末尾にまとめる
5.2.2 関数は処理の成功/失敗を戻り値にして返す
5.3 関数ラッパ
5.3.1 簡単な関数ラッパの実装
5.3.2 動的ライブラリによる関数ラッパの実装
6 開発の例
6.1 プログラムを書く目的
6.2 仕様書の作成
6.2.1 機能設計
6.2.2 機能仕様書の作成
6.2.3 レビュー
6.3 コーディング
6.3.1 詳細設計
6.3.2 コーディング
6.3.3 レビュー
6.4 テスト
6.4.1 テスト仕様書の作成
6.4.2 テスト項目
6.5 全体テスト、リリース、保守、完了
C言語 入門書の次に読む本
坂井弘亮 著 / A5判 / 400ページ
ISBN4-7741-1797-8 / 2003年8月2日発売
定価2604円(本体2480円)
1 基本的なスタイル
1.1 スタイルとは
1.2 分割コンパイルとリンク
1.2.1 なぜ分割するのか
1.2.2 1人で開発する場合にも利点はあるのか
1.2.3 分割の方法
1.2.4 分割の例
1.2.5 コンパイラの動作
1.2.6 名前の衝突
1.3 宣言
1.3.1 関数の暗黙の宣言
1.3.2 関数のプロトタイプ宣言
1.3.3 分割コンパイルへの応用
1.3.4 static接頭語
1.3.5 extern接頭語
1.3.6 変数の場合
1.3.7 まとめと問題点
1.4 ヘッダファイルの作成
1.4.1 ヘッダファイルとは
1.4.2 基本的な作り方
1.4.3 作成の例
1.4.4 作成の指針
1.4.5 voidの利用
1.4.6 enumの利用
1.4.7 constの利用
1.4.8 constを引数として利用
1.4.9 constで注意すべきこと
1.4.10 バグの例
2 ライブラリの作成
2.1 なぜライブラリを作成するのか
2.2 ヘッダファイルの作り方
2.2.1 マクロの定義
2.2.2 定数の定義
2.2.3 構造体、共用体の定義
2.2.4 型の定義
2.2.5 関数のプロトタイプ宣言
2.2.6 グローバル変数のextern宣言
2.2.7 他のライブラリにおけるヘッダファイルのインクルード
2.2.8 多重インクルードの問題
2.3 ライブラリの本体の作り方
2.3.1 マクロ、定数、構造体、共用体、型の定義
2.3.2 外部に公開する関数、グローバル変数の本体
2.3.3 外部に公開しない関数や広域変数の本体
2.3.4 ライブラリのヘッダファイルのインクルード
2.3.5 他のライブラリのヘッダファイルのインクルード
2.4 Makefile
2.5 乱数発生用ライブラリの作成
2.5.1 仕様
2.5.2 ライブラリのリスト
2.5.3 使用例
2.6 発展した話題
2.6.1 構造体のメンバの隠蔽
2.6.2 パブリックヘッダファイルとプライベートヘッダファイル
3 設計
3.1 アルゴリズム
3.1.1 アルゴリズムと設計
3.1.2 線形検索
3.1.3 学習
3.1.4 ハッシュ
3.2 データ構造
3.2.1 配列
3.2.2 リンクリスト
3.3 設計の例
3.4 メモリ管理用ライブラリの作成
3.4.1 ライブラリの概要
3.4.2 データ構造の設計
3.4.3 ライブラリのリスト
3.4.4 動作確認
4 バグを出さないために
4.1 ツールの利用
4.2 バグを発生させないコーディング
4.2.1 1つのローカル変数を複数の目的に使用しない
4.2.2 関数の引数を別の用途に利用しない
4.2.3 malloc()とfree()は近くに書く
4.2.4 構造体は作成すると同時に初期化する
4.2.5 関連のあるコードは近くに置く
4.2.6 ポインタのNULLクリア
4.2.7 キャストは少なく
4.2.8 キャストは多く
4.2.9 名前の付け方を統一する
4.2.10 sizeof(char)の明示
4.2.11 チェックしやすい書き方を選択
4.2.12 意図の伝わらない書き方はしない
4.2.13 良く考えて書く
4.3 バグ発生後に対処しやすいコーディング
4.3.1 解放したらNULLクリアする
4.3.2 関数の先頭で引数のチェックを行う
4.4 調査のためのコーディング
4.4.1 関連のあるものは、1つのディレクトリにまとめる
4.4.2 関数を複数行に分けない
4.4.3 grepでの検索を意識する
4.4.4 自作ツールの利用を意識する
4.5 すぐに修正/確認ができること
4.5.1 中括弧を省略しない
4.5.2 returnは1箇所でまとめる
4.5.3 似た処理は1箇所にまとめる
4.5.4 すぐに確認を行う
4.6 将来性があること
4.6.1 ブロックのネストを深くしない
4.6.2 gotoの利用をためらわない
4.7 コーディング時に気をつけること まとめ
4.7.1 楽すること
4.7.2 癖づけ
4.7.3 他人のことを考える
4.7.4 規格や文法を過信しない
4.7.5 ANSI規格
5 デバッグ
5.1 デバッグコード
5.1.1 abort()、assert()の利用
5.1.2 syslog()
5.1.3 ログの出力
5.1.4 チェックコード
5.1.5 デバッグレベル
5.2 エラー処理
5.2.1 エラー処理は関数の末尾にまとめる
5.2.2 関数は処理の成功/失敗を戻り値にして返す
5.3 関数ラッパ
5.3.1 簡単な関数ラッパの実装
5.3.2 動的ライブラリによる関数ラッパの実装
6 開発の例
6.1 プログラムを書く目的
6.2 仕様書の作成
6.2.1 機能設計
6.2.2 機能仕様書の作成
6.2.3 レビュー
6.3 コーディング
6.3.1 詳細設計
6.3.2 コーディング
6.3.3 レビュー
6.4 テスト
6.4.1 テスト仕様書の作成
6.4.2 テスト項目
6.5 全体テスト、リリース、保守、完了