marunomaruno-memo

marunomaruno-memo

俺のコードのどこが悪い?―コードレビューを攻略する40のルール

2012年07月15日 | Weblog
俺のコードのどこが悪い?―コードレビューを攻略する40のルール [単行本]
藤原 克則 (著)
http://www.shuwasystem.co.jp/products/7980html/2918.html

価格: 2100円(税込)(本体2000円)
単行本: 295ページ
出版社: 秀和システム (2011/03)
ISBN-10: 4798029181
ISBN-13: 978-4798029184
発売日: 2011/03
商品の寸法: 23.4 x 18.2 x 2.2 cm

ダウンロード
http://www.shuwasystem.co.jp/support/7980html/2918.html

正誤
http://www.lares.dti.ne.jp/~foozy/fujiguruma/books.html#codereview-book.errata

著者
http://www.lares.dti.ne.jp/~foozy/fujiguruma/books.html#codereview-book

★レビュー準備編
●1 レビューを効率良く進めるために
1.1 全体像を素早く掴むための準備
1.2 コードの参照性を高めるための準備
●2 レビューでの指摘を活かすために
2.1 「失敗学」とは?
2.2 失敗の分類
2.3 原因の究明
2.4 失敗への対策
2.5 添付チェックシートについて
●3 レビューでの指摘を恐れないために
3.1 「評価」と「技能」
3.2 「責任の共有」と考える
3.3 「指摘がない」のは良いことか?
3.4 「間違える」のは「難しい」から

★レビュー実践編
■機能充足性
●01 if/else文での判定条件は適切ですか?
01.01 判定条件に漏れはありませんか?
01.02 判定順序は適切ですか?
01.03 判定方法は最適化されていますか?
●02 データ型は適切ですか?
02.01 変数型の値域は十分ですか?
02.02 比較対象の型は一致していますか?
●03 ループの終了判定は妥当ですか?
03.01 必要な変数がすべて初期化されていますか?
03.02 終了判定の対象は適切な変数ですか?
03.03 終了条件は適切ですか?
03.04 更新処理に漏れはありませんか?
03.05 構文選択は妥当ですか?
●04 switch文のcaseラベル列挙は十分ですか?
04.01 caseラベルの列挙に漏れはありませんか?
04.02 default節は明記してありますか?
●05 引数チェックは十分ですか?
05.01 前提条件の確認を実装していますか?
05.02 前提条件を明記していますか?
●06 戻り値チェックは十分ですか?
06.01 戻り値の仕様は確認済みですか?
06.02 獲得したリソースの解放は適切ですか?

■リソース消費
●07 引数チェックが多過ぎませんか?
07.01 引数チェックは十分軽量ですか?
07.02 関数の呼び出し関係を把握していますか?
●08 戻り値チェックが多過ぎませんか?
08.01 戻り値チェックは十分軽量ですか?
08.02 関数の仕様は確認済みですか?
●09 関数の局所変数が多過ぎませんか?
09.01 未使用変数はないですか?
09.02 通用範囲は妥当ですか?
●10 各行の負荷を把握していますか?
10.01 引数による負荷の変動を把握していますか?
10.02 ループ内での関数呼び出しは軽いですか?
10.03 排他獲得状態は把握していますか?
●11 似たような処理があちこちにありませんか?
11.01 その処理は本当に必要ですか?
11.02 その処理は集約できませんか?
11.03 処理を似せる工夫はしていますか?
●12 不要な条件判定をしていませんか?
12.01 引数/戻り値チェックとの重複はありませんか?
12.02 その条件は成立し得ますか?
●13 構造体渡しは必要ですか?
13.01 構造体のサイズは妥当ですか?
13.02 他から参照されていませんか?
13.03 コンストラクタ/デストラクタは妥当ですか?
●14 不要な関数呼び出しをしていませんか?
14.01 関数の戻り値を処理に使っていますか?
14.02 その関数には副作用がありますか?
●15 関数呼び出しのコストを把握していますか?
15.01 引数の数は妥当ですか?
15.02 ライブラリ形式は妥当ですか?
●16 例外に頼り過ぎていませんか?
16.01 条件判定で済みませんか?
●17 スレッド間同期の方法は適切ですか?
17.01 同期の必要性は認識していますか?
17.02 同期手順は適切ですか?
17.03 同期方法は適切ですか?
17.04 同期対象は明確ですか?
●18 アルゴリズムやデータ構造の選択は適切ですか?
18.01 最大データ量の見積もりはどの程度ですか?
18.02 改変頻度の見積もりはどの程度ですか?
18.03 どんなアクセス方式を想定していますか?
●19 コンパイラの最適化に期待し過ぎていませんか?
19.01 関数横断での最適化を期待していませんか?
19.02 メモリ配置での最適化を期待していませんか?
●20 ファイルアクセスは妥当ですか?
20.01 ファイルアクセスは最小限ですか?
20.02 mmap()の使用は検討済みですか?
20.03 ディレクトリ構成は妥当ですか?
20.04 システムの制限は把握していますか?

■実行安全性
●21 入力データは検証済みですか?
21.01 どこまで信用できるデータですか?
21.02 サイズの妥当性は検証済みですか?
21.03 内容の妥当性は検証済みですか?
●22 スタック消費量は妥当ですか?
22.01 局所変数は最小限ですか?
22.02 関数呼び出しの深さは妥当ですか?
●23 ヒープ消費量は妥当ですか?
23.01 総データ量の見積もりは済んでいますか?
23.02 未使用領域を解放していますか?
●24 スレッド数は十分ですか?
24.01 スレッド数は十分ですか?
24.02 スレッド数が過剰ではないですか?
●25 ファイル操作は妥当ですか?
25.01 ファイル更新手順は妥当ですか?
25.02 ファイルシステム境界は意識していますか?
25.03 時間当たりの転送量の見積もりは済んでいますか?
●26 ネットワークアクセスは妥当ですか?
26.01 連携先との接続障害に備えていますか?
26.02 連携タイミングに関する前提は妥当ですか?
26.03 時間当たりの転送量の見積もりは済んでいますか?
●27 異常が検出された際の挙動は適切ですか?
27.01 継続可能な異常ですか?
27.02 不要なリソースは解放していますか?
27.03 異常への対応位置は妥当ですか?

■保守性
●28 横に長いコードになっていませんか?
28.01 ループや条件判定の入れ子が多過ぎませんか?
28.02 関数引数が多過ぎませんか
28.03 式が複雑過ぎませんか?
●29 空行を適切に挿入していますか?
29.01 関連する処理はどれですか?
29.02 関連するデータはどれですか?
●30 プロジェクトのコーディング規約に従っていますか?
30.01 プロジェクトにコーディング規約はありますか?
30.02 規約チェック用のツールはありますか?
●31 自分のコーディングスタイルは一貫していますか?
31.01 各行の体裁が一貫していますか?
31.02 関数宣言の体裁が一貫していますか?
31.03 関数定義の体裁が一貫していますか?
●32 機能を詰め込み過ぎていませんか?
32.01 引数による条件判定が多過ぎませんか?
32.02 関数の行数が多過ぎませんか?
●33 変更をどこまで想定していますか?
33.01 その値は変更されませんか?
33.02 その処理は変更されませんか?
●34 名前付けは適切ですか?
34.01 具体性はありますか?
34.02 対称性/相似性はありますか?
34.03 データ型が変わっても通じますか?

■拡張性
●35 無駄な拡張性にこだわっていませんか?
35.01 どの程度の拡張性を想定していますか?
35.02 安全性は考慮されていますか?
●36 十分な情報を受け渡していますか?
36.01 実現される機能範囲は想定済みですか?
36.02 情報の受け渡し方法は妥当ですか?

■テスト容易性
●37 環境に依存する箇所は把握していますか?
37.01 別のホスト上でもテストできますか?
37.02 別のシステム構成でもテストできますか?
37.03 別のOS/CPUアーキテクチャ上でもテストできますか?
●38 テスト環境の構築は簡単ですか?
38.01 必要なソフトウェアの入手は簡単ですか?
38.02 必要なハードウェアの入手は簡単ですか?
38.03 事前状態の作成は簡単ですか?
●39 日付と時刻の扱いを考えていますか?
39.01 テストデータの準備はどうしていますか?
39.02 「今日」「今」を扱いますか?
●40 どこまで細分化したテストを行えますか?
40.01 テスト対象関数は呼び出せますか?
40.02 組み合わせバリエーションは把握済みですか?
40.03 エラー系のテストはできますか?
40.04 タイミング依存の処理はテストできますか?
あとがき
レビューチェックシート
分類先決定のためのフローチャート

最新の画像もっと見る

コメントを投稿