indent style
名詞
[C、C++、Javaプログラマ] コードを読みやすくインデントするために使う規則。主要なC言語のインデントスタイルは4つあり、以下に説明する。いずれも、読者が制御構文のスコープを視覚的に追いやすくすることを目的としている。これらはC言語に似た構文を持つC++とJavaに受け継がれた。スタイルを分ける重要な要素は、{と}を、それらが囲む文に対して、また(もしあれば)ブロックのガードないし制御を行う文(if、else、for、while、do)に対して、どこに置くかである。
K&Rスタイル — Kernighan & Ritchieにちなんで名付けられた。K&Rの例がこの形式で書かれているからである。Unixカーネルがこれで書かれているのでカーネルスタイルとも呼ばれ、その支持者からは‘One True Brace Style’(略して1TBS)とも呼ばれる。Cコードでは、本体は通常、レベルごとに8スペース(またはタブ1つ)でインデントされる。ここに示すとおりである。Cでは4スペースが時折見られるが、C++とJavaでは4スペースが例外ではなくむしろ規則になりがちである。
if (<cond>) {
<body>
}
Allmanスタイル — Eric Allmanにちなんで名付けられた。Berkeleyのハッカーで、これを使ってBSDユーティリティの多くを書いた人物である(BSDスタイルと呼ばれることもある)。PascalやAlgolの通常のインデントスタイルに似ている。Javaプログラマの間で広く使われている、K&R以外で唯一のスタイルである。ここに示す基本的なレベルごとのインデントは8スペースだが、C++とJavaのプログラマは一般に4スペース(あるいは時に3スペース)を好む。
if (<cond>)
{
<body>
}
Whitesmithsスタイル — 初期の商用Cコンパイラ、Whitesmiths Cに付属していた例によって広められた。ここに示す基本的なレベルごとのインデントは8スペースだが、4スペースが時折見られる。
if (<cond>)
{
<body>
}
GNUスタイル — GNU EMACSとFree Software Foundationのコード全体で使われ、ほかではほとんどどこでも使われていない。インデントは常にレベルごとに4スペースで、{と}は外側と内側のインデントレベルの中間に置かれる。
if (<cond>)
{
<body>
}
調査によれば、AllmanスタイルとWhitesmithsスタイルが最も一般的で、ほぼ同等のシェアを占めている。K&R/1TBSはかつてほぼ普遍的だったが、今ではCではずっと少なくなっている(開始の波括弧がifやwhileのガード部分の右丸括弧に紛れて見失われがちで、これはBad Thingである)。1TBSの擁護者は、読みやすさにおける想定上の利得は、垂直方向のスペースを比較的節約できるという彼らのスタイルの利点ほど重要ではなく、それによって一度に画面上でより多くのコードを見られるのだと論じる。Java Language Specificationは、識別子の大文字小文字だけでなく、メソッド名、クラス名、インタフェース名、変数名のどこに名詞、形容詞、動詞を置くべきかも定めている(6.8節)。仕様は波括弧のスタイルを標準化するところまでは踏み込んでいないが、Sun Laboratories由来のすべてのソースコードはK&Rスタイルを使っている。これがJavaプログラマの先例となり、ほとんどがそれに従っている。
こうした問題が今後もholy warsの主題であり続けるのは間違いない。