Когда вы находитесь в Python или Javascript, вы всегда должны помещать бинарные операторы в конец предыдущей строки, чтобы исключить преждевременное завершение вашего кода новыми строками; это помогает вам ловить ошибки.
Но в C или C ++ это не проблема, поэтому мне интересно:
Есть ли причина для меня предпочесть вторую версию первой?
return lots_of_text
+ 1;
против
return lots_of_text +
1;
(Например, один из них помогает предотвратить другие виды ошибок? Или один из них считается более читабельным?)
c++
coding-style
user541686
источник
источник
Ответы:
Как видно из ответов, по этому вопросу нет единого мнения. Если вы не работаете в команде, используйте то, что вам удобнее.
Я предпочитаю вставлять новую строку перед операторами.
Всякий раз, когда мне нужно разбить строки, я обычно помещаю в строку не более одного термина одного и того же «уровня»:
Закон тяготения Ньютона в Python:
Сравните это с:
Я хочу знать, что я «делить на расстояние в квадрате», я не хочу знать, что «mass_2 получает разделить», потому что это не так, как я думаю , математических выражений.
Кроме того, я обычно хочу сначала узнать, что я делаю (оператор), прежде чем беспокоиться о том, что я делаю (операнды).
Или рассмотрим этот запутанный оператор SQL:
Это позволяет мне увидеть, как отдельные условия связаны очень легко, просто просматривая сверху вниз без необходимости читать каждую строку до конца, чтобы найти оператора, а не:
Я думаю о бывшем в терминах «
X
истинно», то я изменить это, говоря: « И это тоже правда» , который чувствует себя более естественно для меня , чем наоборот. Кроме того, я считаю, что первый намного легче разобрать визуально.Или пример PHP:
Опять же, я могу просто читать по вертикали, чтобы увидеть, что я просто конкатенирую текст, потому что большую часть времени я чувствую, что мне действительно все равно, что находится внутри строк / условий.
Конечно, я бы не стал применять этот стиль безоговорочно. Если бы добавление новой строки после оператора показалось мне более логичным, я бы так и сделал, но пока не могу придумать пример.
источник
.
, не.=
?force
Я почти всегда разбиваю строки перед двоичными операторами, чтобы прояснить читателям кода, что это продолжение выражения, а не следующее утверждение. Это важно, если следующий оператор обычно имеет отступ. Например, рассмотрим оператор if со сложным условным выражением:
Вторая часть условного выражения легко спутать с первым утверждением then-part. Это может привести к путанице, если первая часть условия длинная, а && заканчивается вправо. Сравните это с альтернативой:
Это выглядит немного странно, но совершенно ясно, что вторая часть условия не является началом оператора.
Я делаю это и в других контекстах, но утверждение if является наиболее важным, поскольку отступы неоднозначны. Конечно, можно изменить отступ или расположение скобок, но это тоже выглядит странно.
tl; dr левый конец строки более важен для быстрого понимания прочитанного, поэтому размещение оператора на левом конце является более заметным маркером, так как это продолжение, а не утверждение.
источник
+
и-
которое также можно понимать как унарные префиксные операторы). Обычное решение, чтобы выделить продолжающиеся линии, состоит в том, чтобы сделать их более глубокими (т.е. на два уровня).Я бы всегда использовал первое. Вы хотите, чтобы было ясно, что вы делаете с этим 1 там. Если бы я увидел это и там была стена текста над этим, я бы понятия не имел, что происходит с использованием этого слова.
Знак «+» рядом с 1 дает понять, что как минимум я делаю что-то с рассматриваемой цифрой 1, а не вывешиваю: «Я весь в вашем коде, чувак ...» без видимой причины.
источник
Я чувствую, что это очень помогает в прочтении понимания, когда строка указывает, что оператор продолжается в следующей строке, имея двоичный оператор в конце, и, таким образом, делает оператор неполным. Недостающей точки с запятой мне недостаточно, чтобы сразу понять это.
Это может быть просто вопросом привычки, но если вы не работаете исключительно на языках, которые требуют точки с запятой (что я считаю довольно нереалистичным, учитывая распространенность сценариев оболочки, make-файлов и языков, таких как Python), у вас, вероятно, также не будет этой привычки.
РЕДАКТИРОВАТЬ: Джорджо делает замечание в комментариях: это использование повторяет пунктуацию , как в математике, так и на естественных языках. Ты бы написал
Ты бы не писал
источник