
中括弧はどこに書くか?
会社でも、ネットでも常に存在するのが中括弧{}の字下げスタイル問題。
大別してカーニハン&リッチースタイルと、BSD/オールマンスタイルに分かれる。
カーニハン&リッチー
if (x < 0) { printf("負"); // 値が負の処理を記述 } else { printf("正、または0"); // 値が正または0の処理を記述 }
UNIX系なソフトを経験した人に多く見られるスタイル。
古い人や、伝統的に改版を繰り返しているようないソース、C言語を中心とした開発経験者にも多い。
C言語の頃の開発環境はコンソールと呼ばれる80桁x25行の文字専用の画面だった。
メニューやファンクションキーの表示を考慮すると、編集画面として使用できるのは22~23行だろう。
そんな環境では、より多くの情報を画面内に表示しなければならない。
中括弧で1行確保するなんて、もったいないわけである。
現代においては、桁も行も十分に贅沢に使えるので、コンパクト性よりも可視性である。
なお、関数のみ次行に書くのはコンパイラの問題だったのだが、多くはそのまま引き継がれている。
BSD/オールマンスタイル
if (x < 0) { // 値が負の処理を記述 printf("負"); } else { // 値が正または0の処理を記述 printf("正、または0"); }
最近のMicrosoft Visual StudioやC#の標準スタイル。
編集していると分かるが、ブロック単位でのコピペ、移動が行単位になるので、ラクです。
1行コメントを括弧の後ろに記述できるので、ラクです。
適度に空間が空くと見やすいです。
初心者や、これから始める人は是非、このスタイルで記述してほしい。
スクロールすると見にくいはウソ
筆者は当初、カーニハン&リッチースタイルでした。
それは80x25の画面に隙間なくコードがびっしり書かれている方が「全体を俯瞰しやすい」と思っていたからだ。
スクロールするのが面倒、行数、バイト数が少ない方がいいとも思っていた。
コードを書いているときは、その考えに間違いはなかった。
なぜなら、書いているときは「書いたコードをほぼすべて理解している」から。
2年経ったらすっかり忘れていた
2年後にコードを改版することになった。
書いたコードは、ほぼすべて忘れている。自分で、自分のコードを解析する羽目になった。
画面を埋め尽くすコードやコメント。全体の処理の俯瞰がなかなか進まない。
スクロールしていないのに見にくい
画面とにらめっこ。ブロック単位での処理の把握に時間がかかった。
括弧の対応も分かりにくく、ヘタに改版するとバグを生みかねない。
結局、オールマンスタイルのようにブロックを書き直し、1行に複数の処理を書くのも止めた。
if文など、ステートメントが1行の場合、中括弧は不要だが、1行でも入れるようにした。
処理の単位で空行も入れ、コメントも行の後ろでなく、前に入れるようにした。
全体量として3~4倍くらいになっただろうか。
スカスカの方が頭に入りやすい
1度に理解できるステップ数はどのくらいだろうか。筆者は5行くらい。その組み合わせで全体を俯瞰していく。
スクロールはするが、1つ1つが短い単位なので、頭に入りやすい。
つまり、スクロールするから見にくいのではなくて、処理単位で分かりやすく書いていないから見にくいのである。
コードは読み物
1画面に収まっている=分かりやすいは間違いだと気づく。
結論として「書いたコードをほぼすべて忘れる」のを前提とし、人に見せるドキュメントのつもりで書く。