中括弧はどこに書くか?

会社でも、ネットでも常に存在するのが中括弧{}の字下げスタイル問題。
大別してカーニハン&リッチースタイルと、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画面に収まっている=分かりやすい間違いだと気づく。
結論として「書いたコードをほぼすべて忘れる」のを前提とし、人に見せるドキュメントのつもりで書く。