С моей точки зрения, для любого языка, для которого фигурные скобки необязательны, размещение фигурных скобок на той же строке, что и оператор if, нежелательно. Рассмотрим следующее.
if (VeryLongConditionThatIsWiderThanScreen) {
// Thousands of lines of badly indented code.
// You cannot rely on indentation to tell you were the block ends.
}
Если фигурная скобка находится в конце оператора if, мне нужно искать и нажимать клавишу конца только для того, чтобы определить, где заканчивается этот блок кода. Я ненавижу это делать. Я ищу и клею машинистку с плохим зрением, и мне требуется немало усилий, чтобы найти этот конечный ключ, чтобы я мог узнать, где заканчивается этот блок кода.
Я пытаюсь использовать clang-format, используя расширение ClangFormat Visual Studio 2015, но я настаиваю на том, чтобы фигурные скобки не помещались в ту же строку, что и if. Все встроенные стили подходят. Я прочитал документацию по адресу http://clang.llvm.org/docs/ClangFormatStyleOptions.html и написал следующий файл в формате .clang.
---
Language: Cpp
BasedOnStyle: WebKit
AlignAfterOpenBracket: AlwaysBreak
AllowShortBlocksOnASingleLine: true
AllowShortIfStatementsOnASingleLine: true
AllowShortLoopsOnASingleLine: true
AlwaysBreakBeforeMultilineStrings: true
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
AfterControlStatement: true
AfterEnum: true
AfterStruct: true
AfterUnion: true
BeforeCatch: true
BeforeElse: true
BreakBeforeBraces: Custom
BreakBeforeInheritanceComma: true
ColumnLimit: 100
ConstructorInitializerAllOnOneLineOrOnePerLine: true
Cpp11BracedListStyle: true
IndentWidth: 2
SortIncludes: false
TabWidth: 2
...
Если я правильно интерпретировал документацию, то установка для AfterControlStatement значения true должна привести к тому, что clang-format поместит фигурную скобку в строку после if, чего я и хочу. Этого не происходит. Я поместил файл формата .clang в тот же каталог, что и файл моего проекта. Я также попытался назвать его _clang-format. Ничего не работает. Каждый раз, когда я использую пункт меню CLang Format Document, он помещает все фигурные скобки, связанные с оператором if, в ту же строку, что и оператор if.