書籍『プログラミングのセオリー プログラムの価値を高める"定石"を学ぶ』のレビューが凄い
2008年に出た本(http://gihyo.jp/book/2008/978-4-7741-3628-8)で、レビューやトラックバックも当時のものばかりだが、読んでるとなかなかに凄まじい。
amazonのカスタマーレビュー。
↓
http://www.amazon.co.jp/product-reviews/477413628X/ref=cm_rdp_hist_hdr_cm_cr_acr_txt?ie=UTF8&showViewpoints=1
書籍紹介ページへのトラックバック。
↓
(1) http://d.hatena.ne.jp/bleis-tift/20081006/1223298057
(2) http://d.hatena.ne.jp/bleis-tift/20081016/1224092899
(3) http://d.hatena.ne.jp/bleis-tift/20081018/1224263061
ここまでボロクソに書かれていると、逆に読んでみたくなるな。
トラックバックにもあるが、目次を眺めた限りだとかなり良さそうに見えるので方向性は間違っていないはず。
↓
Chapter1 書式のセオリー
プロは書き方のルールを守る
1 わかりやすいプログラムの第一歩は名前付けから始まる
【命名規約】
2 統一性のある書式がメンテナンスをスムーズにする
【ソースコードの書式】
3 誰もが一目でわかり,混乱を防ぐコメントの付け方
【コメント】
4 数値に名前を付けて,作業の手間を省く
【マジックナンバー】
5 思わぬバグを生む落とし穴は,この方法で避ける
【ハードコーディング】
6 短いことより,わかりやすいことの方が価値がある
【トリッキーなコード】
7 トラブルのタネ,一本ソースは関数化で防止
【恐怖の一本ソース】
Chapter2 変数と演算のセオリー
見落としがちなプログラミングの決まり事
1 int型とdouble型なら余計な問題に巻き込まれない
【データ型】
2 浮動小数点数には誤差が付きもの
【浮動小数点数の誤差】
3 適切な初期化で,処理を高速化,コードを短縮できる
【変数の初期化】
4 #defineとconstの使い分けの意味を理解する
【#defineとconst】
5 わかりやすいプログラムはカッコを省かない
【演算子の優先順位】
6 数字に強いプログラマは数の調整法を知っている
【乱数と丸め】
7 無限大,データの異常など,おかしな結果の原因を押さえる
【0除算とオーバーフロー】
Chapter3 制御構造のセオリー
考えをわかりやすく,スマートに書く
1 考えをそのまま表せば,見直しがスムーズになる
【forとwhile,ifとswitchの使い分け】
2 goto文は毒にも薬にもなる。盲目的に拒否しない
【goto文】
3 状態を示す変数を上手に活用する
【フラグ】
4 while文と再帰呼び出しに潜むバグに注意する
【無限ループ】
5 状態遷移図はスマートなプログラムを書くヒントになる
【状態遷移】
Chapter4 関数のセオリー
作りやすく,使いやすくするためのテクニックがある
1 迷ったときは標準ライブラリ関数を真似る
【引数の順序と戻り値】
2 すでにある関数を内部に取り込んで効率を上げる
【ラッパ関数】
3 優れたプログラマは,むやみに引数を増やさない
【引数の数を減らす】
4 再帰はメリットとデメリットを秤にかけてから使う
【再帰呼び出し】
5 基本機能を複数回呼び出してコードを短くする
【花文字の回転と拡大】
6 メンテナンスが楽で,再利用性に優れた関数の作り方
【関数の構造】
7 改造しやすいモジュールを作るポイント
【モジュール間結合度とモジュール強度】
Chapter5 ポインタのセオリー
きちんと理解して1つ上のレベルに到達する
1 ポインタはメモリとデータの仕組みから理解する
【引数をポインタにする】
2 やっかいなバグ=メモリリークの発生の原因と防ぎ方
【戻り値をポインタにする】
3 リスト構造は「つながり情報」で考えればわかる
【リスト構造】
4 ポインタの配列を活用する場面を知る
【ポインタのポインタ】
5 委譲がわかれば,イベントの本質をつかめる
【イベントハンドラ】
Chapter6 速く,小さく,わかりやすくするセオリー
最適化のためのアイディア
1 速さを取るか? 大きさを取るか?
【実行速度 vs. サイズ】
2 目印のデータを使って処理を高速化する
【番兵】
3 ユーザーに遅いと感じさせないテクニック
【見かけ上の速さ】
4 条件式をわかりやすく,ブロックを少なくする
【複雑な条件式とブロック】
5 後々の負担を減らす行為は,すべてリファクタリング
【リファクタリング】
Chapter7 オブジェクト指向のセオリー
考え方とテクニックを分けてとらえる
1 どんな言語でもオブジェクト指向を実践できる
【オブジェクト指向とプログラミング言語】
2 なぜあるのかがわかれば,使いこなせる
【ラッパクラス】
3 オブジェクト指向の考え方とテクニックを区別する
【継承,カプセル化,多態性】
4 デザインパターンからOOPにおける工夫のポイントを知る
【GoFデザインパターン】
5 クラスライブラリと自分のプログラムをつなぐための鍵
【インターフェイス】
Chapter8 エラーとデバッグのセオリー
エラー,デバッグと上手に付き合う
1 エラーの確認は無駄を省いて行う
【エラーチェック】
2 エラーの通知方法は関数や言語によって使い分ける
【エラーを知らせる方法】
3 コンパイルエラーの原因はコメントで囲んで絞り込む
【コンパイルエラー】
4 ツールいらずのデバッグテクニック
【printfデバッグ】
5 処理の時間と回数を把握して,プログラムを高速化する
【処理時間と呼び出し回数】
ある程度経験のあるプログラマであれば、この目次に対する答えは持っているだろう。
そういった「知恵」を正しく伝えてゆくのも先人の役割なので、著者の心意気は買いたい。やっぱり読んでみようかな。