一、命名的艺术
坦白的说,命名是一件困难的事情,要想出一个恰到好处的命名需要一番功夫,尤其我们的母语还不是编程语言所通用的英语。不过这一切都是值得了,好的命名让你的代码更直观,更有表达力。
好的命名应该有下面的特征:
1.1 名副其实
好的变量名告诉你:是什么东西,为什么存在,该怎么使用
如果需要通过注释来解释变量,那么就显得不那么名副其实了。
下面是书中的一个示例代码,展示了命名对代码质量的提升
# bad code
def getItem(theList):
ret = []
for x in theList:
if x[0] == 4:
ret.append(x)
return ret
# good code
def getFlaggedCell(gameBoard):
'''扫雷游戏,flagged: 翻转'''
flaggedCells = []
for cell in gameBoard:
if cell.IsFlagged():
flaggedCells.append(cell)
return flaggedCells
1.2 避免误导
不要挂羊头卖狗肉
不要覆盖惯用缩略语
这里不得不吐槽前两天才看到的一份代码,居然使用了 l 作为变量名;而且,user居然是一个list(单复数都没学好!!)
1.3 有意义的区分
代码是写给机器执行,也是给人阅读的,所以概念一定要有区分度。
# bad
def copy(a_list, b_list):
pass
# good
def copy(source, destination):
pass
1.4 使用读的出来的单词
如果名称读不出来,那么讨论的时候就会像个傻鸟
1.5 使用方便搜索的命名
名字长短应与其作用域大小相对应
1.6 避免思维映射
比如在代码中写一个temp,那么读者就得每次看到这个单词的时候翻译成其真正的意义