我希望我没有违反任何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
我觉得线条延续字符有些禁忌;但是,如果我正在使用这些大字典而无法在变量名称中间进行干净的休息,那么我真的无法想到一个更清晰的解决方案。谢谢你的帮助!
答案 0 :(得分:11)
我不认为Python中的行继续存在任何问题。但有时我更喜欢这个:
big_variable['big_key']['big_value'] =(
another_big_variable_that_pushes_line_over_79_characters
)
它也适用于长表达式。
答案 1 :(得分:7)
行继续 有点禁忌,但不是世界末日。我们必须始终努力编写代码,以便其他程序员能够理解我们正在做的事情。
使用行继续符\
只是我们工具库中实现这一易读性目标的一个工具。
命名约定是另一个问题。达芬奇说"简单是最终的复杂性。"如果你可以使变量名称变小和可理解,那么你很复杂;-)。只是说var1, var2, var3
等太容易了。提出好名字是技能,需要付出努力。
您希望看到名为ChiefExecutiveOfficerOfCompanysName
或CEOName
的变量吗?
如果您可以合并if
语句,那么您的代码可以变得更加清晰。如果你有if...else-if
的大层次结构,那么你可能会做错事(这是一个code smell)。例如,您可以更改此内容:
if this:
if that:
if here:
if there:
进入这个:
if this and that and here and there:
或者将这样的粗略逻辑抛入评估函数中,如下所示:
if EvaluateConditions(<args>):
将代码分解成逻辑部分,并将这些部分放入函数中是另一种使事物可读的方法(我们只有很多RAM,而且我们希望将整个函数放在其中......人类不是&# 39;非常擅长分页)
,避免使用稍微更改来复制和粘贴代码