Я недавно решил включить .clang-format
файл в моем C ++ проекте, чтобы сделать код более единообразным и легким для чтения. Мне больше всего нравятся настройки Google по умолчанию, за исключением того, что я хотел бы использовать 4 пробела вместо двух.
Проблема в том, что некоторые операторы становятся сложнее для чтения, когда текущая строка переполняет ограничение в 80 символов. Например, в операторе if, который переполняет:
if (some_condition || some_other_condition ||
yet_another_condition) {
// block starts here
}
Выравнивание yet_another_condition
соответствует началу блока if, что затрудняет чтение без какого-либо перерыва. В идеале, то, что я хотел бы случиться в этой ситуации, это что-то вроде этого:
if (some_condition || some_other_condition ||
yet_another_condition)
{
// block starts here
}
Тем не менее, я хочу только открывающую скобку на новой строке когда текущая строка переполняется в следующую, как в приведенном выше примере. Во всех других случаях я хочу открывающую скобку в той же строке (это относится к операторам if / for / while / switch и т. Д., А также к функциям).
Можно ли указать это поведение в моем .clang-format
файл при сохранении остальных настроек Google по умолчанию?
Утилита clang-format позволяет указать пользовательское обтекание скобками с BraceWrapping: Custom
, но он недостаточно гибок, чтобы знать контекст, который вам требуется.
Альтернативное решение для улучшения читабельности состоит в том, чтобы использовать отступ продолжения больше 4, например ContinuationIndentWidth: 8
,
Других решений пока нет …