当变量嵌套了几层、名称相当长并且被分配的值/表达式相当长时,为变量赋值的首选样式是什么?
例如:
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
我觉得续行符有点禁忌;但如果我正在使用这些大字典,并且我无法在变量名称中间彻底打破,我真的想不出比我拥有的解决方案更干净的解决方案。
我认为Python中的续行没有任何问题。但有时我更喜欢这个:
big_variable['big_key']['big_value'] =(
another_big_variable_that_pushes_line_over_79_characters
)
它在长表达式中也很有用。
续行是有点禁忌,但这并不是世界末日。我们必须始终努力编写代码,以便其他程序员能够理解我们在做什么。
使用续行字符
\
只是我们实现易读性目标的工具之一。
命名约定是另一个问题。正如da Vinci所说:“简单就是终极的复杂。”如果你能让变量名变得小且易于理解,那么你就是老练的;-)。光说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>):
将代码分解成逻辑块,并将这些块放入函数中是使内容可读的另一种方法(我们只有这么多 RAM,并且我们希望将整个函数放入其中......人类不太擅长寻呼)
避免通过使用参数化函数或一些好的
设计模式来复制和粘贴稍有更改的代码。