Назначение с продолжением строки - Python
Я надеюсь, что я не нарушаю никаких правил SO с этим: какой предпочтительный стиль для назначения значений переменным, когда переменные вложены в несколько уровней глубиной, имеют довольно длинные имена и им присваиваются довольно длинные значения / выражения.
Например:
if this:
if that:
if here:
if there:
big_variable['big_key']['big_value'] = another_big_variable_that_pushes_line_over_79_characters
other_thing = something
Нарушения ограничения символов только в одной цифре, но я хочу очистить свой код так, чтобы он максимально точно следовал PEP 8. Я сделал следующее, но я все еще довольно новичок в Python, и я не уверен, что такое может заставить опытного программиста Python съежиться:
if this:
if that:
if here:
if there:
big_variable['big_key']['big_value'] = \
another_big_variable_that_pushes_line_over_79_characters
other_thing = something
У меня складывается впечатление, что символ продолжения строки несколько запретный; но я не могу придумать более чистого решения, чем то, которое у меня есть, если я работаю с этими большими словарями, и я не могу сделать чистый разрыв в середине имени переменной. Спасибо за помощь!
2 ответа
Продолжение строки немного табу, но не конец света. Мы всегда должны стремиться писать код так, чтобы какой-нибудь другой программист мог понять, что мы делаем.
Использование символа продолжения строки \
это всего лишь один из инструментов в нашем арсенале для достижения этой цели разборчивости.
Соглашения об именах - другая проблема. Как сказал да Винчи: "Простота - высшая изощренность". Если вы можете сделать имена переменных маленькими и понятными, то вы искушены;-). Слишком просто сказать var1, var2, var3
и т.д. Придумывание хороших имен - это навык, который требует усилий.
Вы бы предпочли увидеть переменную с именем ChiefExecutiveOfficerOfCompanysName
или же CEOName
?
Если вы можете объединить if
заявления, то ваш код может стать еще более разборчивым. Скорее всего, если у вас есть большая иерархия if...else-if
, то вы делаете что-то не так (это запах кода). Например, вы можете изменить это:
if this:
if that:
if here:
if there:
В это:
if this and that and here and there:
Или добавьте такую грубую логику в функцию оценки следующим образом:
if EvaluateConditions(<args>):
Разбиение кода на логические части и помещение этих частей в функции - это еще один способ сделать вещи читабельными (у нас только так много оперативной памяти, и мы хотели бы разместить в ней целые функции... люди не очень хорошо разбираются в страницах)
Избегайте копирования и вставки кода с небольшими изменениями с помощью параметризованных функций или некоторых хороших шаблонов проектирования
Я не думаю, что есть какие-либо проблемы с продолжением строки в Python. Но иногда я предпочитаю это:
big_variable['big_key']['big_value'] =(
another_big_variable_that_pushes_line_over_79_characters
)
Это полезно и в длинных выражениях.