ホーム > 読んだ

Brian W.Kernighan, Rob Pike
プログラミング作法

ガイド

書誌

authorBrian W.Kernighan, Rob Pike
editor福崎俊博(訳)
publisherアスキー
year2000
price2,800+tax
isbn7561-3649-4

目次

1本文
2抄録

履歴

editor唯野
2001.7.24読了
2001.7.24公開
2002.11.28修正

カーニハンによる書名の通りプログラミング全般におけるポイントを集約した本。内容的には既に心得ているものが多かったので(実践の程度と聞かれるとまだまだですが :-))、確認しながら読み通すという感じだった。自分が新人の頃にこの本があれば「もう少し効率的に要点を把握できたのではないか」という内容で、むしろ後輩などへ薦めるのに適した本だと思う。

カーニハンには既に古典ともいえる『プログラム書法』と『ソフトウェア作法』(いずれも J.Plauger との共著で、邦訳は共立出版)という本があり、本書はその延長線上ともいえる内容になっているが、これらはいずれも刊年が 1980 年頃とかなり古いため、内容も構造化手法寄りであり、現在ならやはり昨今のトピックまでを考慮に入れる本書の方が広く薦められると思う。

実際、内容的には申し分なく、C を中心としているが必要な部分では C++、Java、Perl を用いるなど、変な意味での偏りもない。この一冊でかなりのポイントを網羅できているので「C でプログラムを書くようにはなったが、よりよい(またはより現実に即した)プログラムを書くための指針が欲しい」という人にはぴったりの本だと思う。さすがはカーニハンの本というところだろう。

抄録

第1章 スタイル

  • よいスタイルは習慣の問題である
  • グローバルには分かりやすい名前、ローカルには短い名前
  • (インデックスの i,j、ポインタの p,q、文字列の s,t など)
  • 関連性のあるものは統一した命名をする
  • (queue、Q、Queue などと併用しない、bool を返す is? など 関数には能動的な名前(動詞 + 名詞)を付ける)
  • 名前を的確にする
  • 構造が分かるようにインデントする
  • 自然な式を使う
  • (条件式を否定演算(!)ではなく、肯定となるように記述)
  • カッコを使って式の曖昧さをなくす
  • (優先度の高いオペランド同士をくっつけて書く)
  • 複雑な式を一文にまとめず分割する
  • 明快に書く (小賢しいコードを書かない)
  • 副作用に注意する
  • インデントとブレースのスタイルを統一する
  • (作業内容が常に同じ方法なら、それが違うだけで注目できる)
  • 言語の慣用句によって一貫性を確保する
  • (gets ではなく fgets を使う、strlen は \0 を含めず strcpy は含む、
    多分岐に else-if を使う (可能性の高いものから記述))
  • 関数マクロはなるべく使わない (C++ ならインライン関数で代替)
  • マクロの本体と引数はカッコに入れる
  • マジックナンバーには名前を付ける (原則として 0/1 以外の全て)
  • 数値はマクロではなく定数として定義する