字下げスタイル
BSD/オールマン・スタイル (Allman style) もよく使われる。これはBSDで数多くのユーティリティを開発したエリック・オールマンの名が由来である (上述のBSD KNFスタイルと混同されないようにされたし)。
このスタイルでは、制御文の後の中括弧を次の行に置き、制御文と同じ字下げ位置とする。ブロック内の文は次のレベルに字下げされる。
これはPascalやTransact-SQLの標準的な字下げに似ていて、中括弧が "begin" や "end" といったキーワードと同じように扱われている。
このスタイルの利点は、ブロックの前後が中括弧しかないほとんど空白の行で囲まれているため、非常にわかりやすい点である。また、対応する中括弧が同じ字下げ位置に必ず来るので、その対応も目で追いやすい。またブロックの形がコードのブロックと、対応する制御文を区別する。制御文やコードブロックをコメント化するなど、コードのリファクタリングをする際に括弧の位置によるエラーを引き起こしにくくなる。また括弧の配置は一番外側の関数定義の配置と一貫性がある。
例えば以下コードは文法的に正しい。
これも同様。
さらに条件付きコンパイルでも使える。
このスタイルは、制御文とブロックを分離することで可読性を向上させることを目的としており、一度に表示できるコードの量は二の次となっている。
Microsoft Visual Studio(Microsoft Visual C++)は、このスタイルをデフォルトで使っている。
ある状況では、ブロックの境界を見失う危険性が生じる。制御構造が複雑で何重にも入れ子になっているときに起きやすい。そのようなコードをスクロールしながら見ていて、制御構造のつながり方を見失うのである。
始まりの中括弧を数えることで制御構造を確認する場合、K&Rなどのスタイルでは、制御構造と中括弧が見た目で分離されていないため、問題が発生しやすい。字下げレベルを手掛かりとする場合は、K&Rスタイルなどの方がブロックを表示する行数が少なくなるため、可読性が増す。
for文などで制御構造を見失うのを防ぐため、ハードタブの8文字幅などの大きな字下げを使ったり、大きな関数をもっと読みやすい小さな関数に分割したりする。Linux ではK&Rスタイルに加えて、そのような手法を使用している。
別の方法として、閉じる側の中括弧の行に以下のようなコメントを加える:
しかし、この方法では同じコードをソース内の2ヶ所に記述しているため、修正を行う際に問題となる。
折りたたみ機能のあるエディタを使うという手法もあり、ある字下げレベル以降のブロックを隠して表示するなどの機能が使える。