Cプログラミングの秘訣を読んでみる

http://www.st.rim.or.jp/~phinloda/cprog.html
を読んでみる。

まずは,

if ( (fp = fopen(filename, "r") ) != NULL) {
        ...
}

の話。これは確かに最初見たときはさっぱりわからなかったなぁ。
筆者は

fp = fopen(filename, "r");
if (fp  != NULL) {
       ...
}

を推奨している。"順序を妨げる処理は思考を妨げる"から。なるほど。納得はしてみたものの前者で慣れてるせいでこのへんはそのままスルー。

次に

while ( (c = getchar() ) != EOF) {
      ...
}

これもよく見たことのある形です。ここから括弧を外すにはって話が始まります。式も値を持つってことがわかれば簡単だ。僕も昔は意味がわかんなかったなぁとしみじみ。要するにさっきのファイルを開くやつも同じってことで思考を妨げずに済むんじゃないかな。

すっきり


次。
フィンローダ流?誰だろそれ?まぁいいや。

わかりやすいプログラムの条件

  • ファイル(モジュール)の分割
  • 初心者はそんなにでかいプログラム作ること無いから気にするな
  • 一つの関数の長さ
    • 行数を減らす
    • でもあんまり関数短くすると呼び出す関数の数が増える。
    • 要するに思考の順序に従うように臨機応変に

コメントについて

余計なコメント

最初はどんどん書いて必要ないと思ったものは徐々に自然に書かなくなるって。そういやrubyかなんかでコメントが必要なくらいならリファクタリングってどっかで見たことがあったような

必要なコメントをなぜ書けないのか?
  • 面倒臭い
  • それがコメントが必要であることがわからない
    • プログラミングに集中しているときにはわかるけど集中してないとさっぱり

なんてことも…

インデントと空白

前田さんのrubyのインデントとかのルールを知ってたのでcに関してもK&Rのや
つで違和感を感じない。なにが標準なのか良く知らないけど。

変数、関数のネーミング法

なるほどね。



結構古い文章だけど、はてブで人気エントリになってるので読んでみました。
俺の個人的なメモなんで当てにしないほうがいいよ。