LINUX.ORG.RU

Ищу проекты на C/C++ с определённым форматированием

 , , ,


2

6

Существует невероятное количество вариантов стиля кодирования. Среди них есть один, в котором для отступов используется четыре пробела, а открывающие фигурные скобки в управляющих конструкциях находятся на той же строке, что и условие. Для однострочных условий получается неплохо:

if (shortcondition) {
    some_code(1);
    some_code(2);
}

но когда условия становится длинными, расползаются на несколько строк, становится трудно различать, где кончается условие и начинается код:

if (longcondition + 1 + 2 + 3 +
    continuation + 4 + 5 + 6) {
    some_code(1);
    some_code(2);
}

Одно из решений, которое мне понравилось — переносить открывающую скобку на новую строку:

if (longcondition + 1 + 2 + 3 +
    continuation + 4 + 5 + 6)
{
    some_code(1);
    some_code(2);
}

При этом в коротких условиях она остаётся на одной строке с условием. Такой подход я с некоторых пор стал использовать в своём коде. Но мои проекты небольшие как по объёму, так и по числу разработчиков.

Теперь собственно, проблема. Мне нужно найти достаточного размера открытые проекты (несколько десятков разработчиков), в которых используется такой стиль. У проекта должен быть документ с описанием стиля кодирования.

(Найти такой проект — одно из условий, которое желательно выполнить, чтобы включить новую опцию в clang-format.)

★★★★★

Ответ на: комментарий от utf8nowhere

Так вот, про «размер таба». 2 символа неудобно тем, что при закомментировании строки вставкой двух слешей в начале она едет.

Это потому что вы сами себе противоречите. Применяйте комментирование для комментирования и не будет проблем. А для исключения кода как правило используют директивы препроцессора.

Dendy ★★★★★ ()

кстати, не понимаю почему бы не писать

if (longcondition + 1 + 2 + 3 + continuation + 4 + 5 + 6) {
    some_code(1);
    some_code(2);
}
или кто-то сейчас использует текстовые терминалы шириной 80 символов?

reprimand ★★★★★ ()

Если условие слишком длинное, скорее всего оно композитное, и в нем не помешает пара комментариев. В таком случае лучше вынести его в переменную над ифкой.

unlog1c ★★★ ()

У нас в Stellarium похожий подход используется.

alex-w ★★★★★ ()

Я обычно так.

Для коротких:

if (foo == bar) {
    ...
}
Для составных и длинных (все зависит от влезает ли в 80 символов):
if (
    foo  == bar  &&
    foo2 == bar2 &&
    (foo3 == bar3 || foo4 == bar4)
) {
    ...
}
Внутри круглых скобок где скобки ака блок, кондишены в индентах. Таким образом я могу еще и комментировать хоть каждуюстроку условия.

deep-purple ★★★★★ ()
Ответ на: комментарий от reprimand

кто-то сейчас использует текстовые терминалы шириной 80 символов?

Какая разница? Лапшина в длинну всегда хуже чем несколько коротких строк вниз.

deep-purple ★★★★★ ()
Ответ на: комментарий от deep-purple

Получается просто другая лапша: переносится по кусочку так, что постоянно разрывается «поток чтения». В итоге получается однозначно не лучше. Так что любое жёсткое ограничение на длину строки - зло. Оно должно иметь рекомендательный характер и плавать в зависимости от контекста.

gag ★★★★★ ()
Ответ на: комментарий от gag

Нет. В угоду читаемости, но с осторожностью, чтобы не просрать производительность, вводятся промежуточные переменные.

deep-purple ★★★★★ ()
Ответ на: комментарий от deep-purple

Какая разница? Лапшина в длинну всегда хуже чем несколько коротких строк вниз.

Лоровская классика - сравнивать несравниваемое

reprimand ★★★★★ ()
Ответ на: комментарий от deep-purple

Недостаточно толсто, попробуй еще раз.

// а я надеялся на здоровую дискуссию

reprimand ★★★★★ ()
Ответ на: комментарий от reprimand

Зачем? Продолжай смотреть в амбразуру и водить глазами по всему горизонту.

deep-purple ★★★★★ ()
Ответ на: комментарий от deep-purple

Зачем?

не актуально

Продолжай смотреть в амбразуру и водить глазами по всему горизонту.

ты под веществами?

reprimand ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.