Рекомендации по неявному или явному соединению строк

9

Я хотел бы знать рекомендации о неявном объединении линий в сравнении с явным объединением линий в Python.

В частности, вы предпочитаете одну форму другой? Что вы рекомендуете в качестве общего дефолта? Какие критерии у вас есть для выбора одного над другим, и если у вас есть предпочтение одного, когда вы делаете исключения для другого?

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

Некоторые рекомендации могут быть обобщены на этот выбор в других языках программирования, но мой собственный уклон несколько сильнее в Python из-за некоторых языковых особенностей, поэтому я хотел бы знать как общие, так и Python-ориентированные рассуждения, которые вы можете есть на эту тему.

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

Вот упрощенный пример:

join_type = "explicit"
a = "%s line joining" \
    % (join_type)
# versus
join_type = "implicit"
b = ("%s line joining"
     % (join_type))
aculich
источник
Вопросы передового опыта не по теме для обзора кода. Я перенес ваш вопрос в лучшее место.
Уинстон Эверт
1
@WinstonEwert перед публикацией я внимательно посмотрел на FAQ по CodeReview и FAQ для программистов , и я выбрал CodeReview, потому что в нем явно сказано, что в число вопросов, которые следует задавать, входят «Лучшие практики и использование шаблонов проектирования в вашем коде». Я включил упрощенную версию рассматриваемого кода, так как это не по теме?
aculich
@WinstonEwert Я опубликовал вопрос в Meta о разъяснении FAQ по CodeReview, если вы хотите прокомментировать это там.
aculich

Ответы:

8

Существует документ в стиле кодирования под названием PEP8. Рекомендуется не использовать \<NL>везде, где можно использовать скобки.

Предпочтительный способ переноса длинных строк - использование подразумеваемого продолжения строки в Python внутри скобок, скобок и скобок. Длинные строки можно разбить на несколько строк, заключив выражения в скобки. Их следует использовать вместо использования обратной косой черты для продолжения строки. Удостоверьтесь, чтобы сделать отступ для продолжения строки соответствующим образом. Предпочтительное место для бинарного оператора - после оператора, а не перед ним.

Полный текст: http://www.python.org/dev/peps/pep-0008/ (раздел Code Layout)

Это не обязательно, но определяет приемлемые хорошие практики, которые особенно полезны, если в вашей команде есть несколько коммиттеров Python.

Миша арефьев
источник
1

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

jcollado
источник
0

В настоящее время я бы предпочел

join_type = "kiding"
a = "%s line joining" % (join_type)

B-))

,

Я склонен предпочесть соединение явных линий, потому что мне не нравится беспорядок в конце выражений.
Но мне нравится Implicit Lines Joining, чтобы уменьшить ширину, занимаемую записью строки.
Тогда в некоторых случаях мне стыдно не смешивать два способа

Eyquem
источник
1
Шутка в сторону, я не люблю явное объединение, потому что оно требует большего набора текста, и трудно отодвинуть все обратные косые черты, когда код редактируется.
Мартино
видимо @eyquem никогда не писал LISP ...
Cowbert