Я предпочитаю «расчленять» функции с 3 или более аргументами для личного использования. читабельность, и я не нашел конфигурации Clang, которая сделала бы это именно так, как я хочу.
Подозреваю, что такой нет, но я хотел убедиться. Похоже, что в Clang нет опции, позволяющей поместить первую скобку вызова функции на новую строку, если количество аргументов > x или если длина строки превышает определенную длину символов.
Я, безусловно, был бы открыт для другого инструмента стиля с предлагаемыми флагами/опциями, позволяющими делать то, что я хочу.
Желаемый результат
Код A (входные данные) )
class X {
public:
int function(Arg arg1, Arg arg2);
private:
int _biggerFunction(Arg1 arg1, Arg2 arg2, bool arg3);
};
int X::function(Arg1 arg1, Arg2 arg2) {
return arg1 + arg2;
}
int X::_biggerFunction(Arg1 arg1, Arg2 arg2, bool arg3) {
if (arg3) {
return arg1 + arg2;
}
else {
return arg1 - arg2;
}
}
Код B (выход)
class X
{
public:
int function(Arg arg1, Arg arg2);
private:
int _biggerFunction
(
Arg arg1,
Arg arg2,
bool arg3
);
};
int X::function(Arg1 arg1, Arg2 arg2)
{
return arg1 + arg2;
}
int X::_biggerFunction
(
Arg1 arg1,
Arg2 arg2,
bool arg3
)
{
if (arg3)
{
return arg1 + arg2;
}
else
{
return arg1 - arg2;
}
}
Попытка решения
Я использовал детектор стилей Clang (в Clang Power Tools для Visual Studio), чтобы попытаться найти подходящую конфигурацию, но результат оказался не совсем таким, как я хотел. Детектор стиля Clang рекомендовал следующее:
# Format Style Options - Created with Clang Power Tools
---
BasedOnStyle: WebKit
BreakBeforeBraces: Allman
ColumnLimit: 50
ExperimentalAutoDetectBinPacking: true
...
Однако результат не соответствует стилю:
Тест детектора стиля Clang
Код A (ввод)
class X {public:
int function(Arg arg1, Arg arg2);
private:
int _biggerFunction(Arg1 arg1, Arg2 arg2, bool arg3);
};
int X::function(Arg1 arg1, Arg2 arg2) {
return arg1 + arg2;
}
int X::_biggerFunction(Arg1 arg1, Arg2 arg2, bool arg3) {
if (arg3) {
return arg1 + arg2;
}
else {
return arg1 - arg2;
}
}
Код B (выход)
class X{
public:
int function(Arg arg1, Arg arg2);
private:
int _biggerFunction(
Arg1 arg1, Arg2 arg2, bool arg3);
};
int X::function(Arg1 arg1, Arg2 arg2)
{
return arg1 + arg2;
}
int X::_biggerFunction(
Arg1 arg1, Arg2 arg2, bool arg3)
{
if (arg3)
{
return arg1 + arg2;
}
else
{
return arg1 - arg2;
}
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... clarations
Мобильная версия