Pull to refresh

Comments 28

Раздражает этот стиль — ставить открывающую скобку "{" в конце строки,
if (b) {          // Пробел после ключевого слова в условии или цикле
} else {          // Пробелы вокруг else
}

вместо того чтобы выделить весь блок, поставив её в той же позиции что и соответствующая ей закрывающая скобка "}":
if (b)
{
  // текст блока
} 
else
{
  // текст блока
}
Это заставляет чересчур полагаться на правильно расставленные отступы для всего текста блока — если в части по каким-то причинам они расставлены неправильно, то начинаешь неправильно читать области действия.

Есть какие-то причины так экономить строчки?
Это заставляет чересчур полагаться на правильно расставленные отступы для всего текста блока — если в части по каким-то причинам они расставлены неправильно

Так можно же прогнать через линтер и все отступы будут там где надо? Мне думается в С++ эта проблема полностью решена.

Если у тебя уже работающая, корректно написанная и компилирующаяся программа — можно.

Если же ты редактируешь её текст, пользуясь всеми любимой копипастой — то автоматическое форматирование с лёгкостью поставит волосы дыбом.

Не соглашусь — хороший линтер должен срабатывать где-то около нажатия ctrl+s (а очень хороший — и по ctrl+v). И уж точно перед коммитом.


Можете привести пример когда автоформаттер распотрошит код на вставке? Из моей практики (JS & Go форматируют на вставке) у меня был только один нюанс недавно. Когда вставлял куски yaml в .ts файл чтобы переписать yaml в inline-js, автоформаттер отбивал в строках всяческие -пробелами, но это решилось одним ctrl+shift+v (у меня это вставка без форматирования). В остальных случаях форматирование автоматически применяется на основании контекста.

В C++ нет context free grammar, в отличие от JS и Go.
Неполный кусок текста с парочкой шаблонов или макросов может ломать любое автоформатирование.
UFO just landed and posted this here
Есть какие-то причины так экономить строчки?
Есть. Как минимум больше полезного текста помещается на экран.

А вообще, на вкус и цвет все фломастеры разные.
> больше полезного текста помещается на экран.

Чем более концентрирован текст, тем сложнее его читать. А чтение и так — самая сложная часть разработки.

> А вообще, на вкус и цвет все фломастеры разные.

Вот только это — руководство по стилю, т.е. оно заставляет всех жрать фломастер одного цвета.
Надо просто читать не по слогам и даже не по словам, а целыми блоками — скорость чтения возрастает. А если делать переносы строк на скобках, то придется мотать экран туда-сюда
Не очень. Визуальная скобка дополнительно заполняет экран и выполняет дублирующую функцию к скобкам в языке, отвлекая от собственно кода.
Думаю основная причина не в строчках (хотя они ратуют за компактность), в однообразии. Когда всё одинаково — глаз не сбивается. А дальше вопрос «Какой именно формат выбрать?». Гугл выбрал … ну описано выше.

Как человек долгое время писавший так:
if
{
}

а потом так:
if {
}

считаю, что это дело исключительно привычки. Привычка формируется быстро.
А меня раздражает обратное. Всю жизнь предпочитаю стиль, принятый в Гугле. Считаю его компактнее, а потому читабельнее. А полагаться на правильно расставленные отступы — это нормально. Сложно представить, как неправильные отступы пройдут код ревью/стайл чекеры.

Ах да, к чему это я. Все это исключительно дело привычки
UFO just landed and posted this here

Простите, а переведены только части 1, 8, 9, 10? Просто только сейчас увидел часть 10, но как-то стало интересно, что там в остальных частях.

В каждой части в шапке есть ссылка «обновляемый перевод». Там полный текст с разбивками на главы. Часть уже переведена, остальное — на английском.

Почему максимальная длина строки 80?
Экран 80 символов. По 1 символу на рамку редактора справа и слева. Еще нужно хотя бы 2 символа оставить, чтобы было понятно, что строка закончилась, и за краем окна ничего нет. Остается 76 символов.
Если мне понадобится закомментировать строку, то я должен буду добавить 3 символа, // и 1 пробел, после этого строка все равно не должна вылезти за пределы окна.
Итого остается 73 символа.


Иначе будте вот так


Слишком длинная строка
Наверное потому, что раньше не было рамок. И вмещалось 80 символов.
И число 80 запомнить легче, чем 73 :) (это уже мои придумки).
На самом деле это от перфокарт идет.
А formater-а и linter-а для этого не изобрели еще?
Можно настроить одинаковый автоформат у всех. Большинство проблем решится.

Я вот думаю, что 80 символов на строку во времена 16:9 — это мало.
И правильно. Вдруг захотите распечатать на бумаге.
MyClass::MyClass(int var)
    : some_var_(var), some_other_var_(var + 1) {
  DoSomething();
}

Перенос двоеточия это просто убийство, лучше сразу застрелиться.
По мне так перенос двоеточия — это гуд. Сразу ясно — это инициализация. Раньше я ещё и запятые переносил (строка начиналась:, some...) и тоже понятно что идёт инициализация. Опять же, у гугла свой взгляд.

Не раз встречался с ситуацией, когда на собесе спрашивают что-то умное, красивое и интересное. Но потом в реальном проекте погружают в такую чачу, что голова становится квадратной через неделю, а глаза читают любой код, даже самый корявый без эмоций. Реальные проблемы в коде, они не обложены ни комментариями ни красивым форматированием. Найди проблему в коде 20 летней давности и станешь внедорожным программистом, которому наплевать на любую грязь. Вот это я называю hard-skill. А украшение - это soft-skill.

Sign up to leave a comment.

Articles