C言語のインデントについて考える

  • (by K, 2018.01.15)

(1) for文

  • 1から10までの和を求めることを考える。
    s = 0;
    for (i = 1; i <= 10; i++)
        s += i;
  • まあこれが普通だろう。
  • しかしなぜこれが普通なのかを考える。数学でシグマを使えば1行で書けることを、どうして3行も使って書くのか。まあ最初のs=0;の行は数えないとしても、forの行と繰り返しの中身が別の行なのは果たして合理的なのか?
  • 数学で、Σと加算式の間に改行だのインデントだのが入るのは果たして合理的だろうか?
  • 私だったらすごい違和感を覚えるに違いない。
  • C言語の世界では、forは繰返し範囲を明示するために、繰り返し範囲は改行してインデントせよとされている。確かに繰り返し処理ならその通りだと思う。でも単純な和とか積とかなら、限りなくシグマに近い用法なのだから、改行しないほうが読みやすいのではないかと思いつつある。
  • ルールはもちろんシンプルなほうが良いと私も思うけど、でもそのルールは何のために制定されたのかと言えば、読みやすくするためではなかったのか。インデントを強要することでかえって読みにくくなったら、それは本末転倒ではないか。
  • もしもこう書けたらどんなに便利だろうか。
    s = sigma(i=1...10) { i }; 
  • そしてこの記法がないからforで代用しているのだという気分になれば、
    for (i = 1; i <= 10; i++) { s+= i; }
  • この記法も許せるのではないか?

(2) if文

  • こういう記述はよく見かける。
    if (...)
        break;
  • しかしこれは自然だろうか?
  • プログラミング言語は、要するに英語の書き方を真似て作ったのだと私は思っているが、「もし~だったら中断しなさい」といいたいのなら、普通の英語ではそんなところに改行を入れたりはしない。
    if (...) break;

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-01-16 (火) 13:36:24 (2456d)