10.28 命名不善的代码会有多坑?这段Python官方入门教程的例程是个典型

看过Python3官方入门的同学也许对这段代码有印象:

命名不善的代码会有多坑?这段Python官方入门教程的例程是个典型

大多数读者也许都认为这些字符串和数字并没有特别意义。如果真是这样,这个例程还不如用 “dict = {'aa': 100,'bb': 200}” 之类来的一目了然,省去多余的猜度。

虽然可以将其中的标识符和字符串当做乱码来阅读,也能习得 Python 的字典操作,但谁让小编有个刨根究底的劲头呢。

不巧发现"guido"是 Python 创作者的名字 (Guido van Rossum),更觉得不该这么简单。根据 Python 源代码27年前的 commit “6fc178f46d40aa068a713b509904d343ee55cfa6”,这个教程中的示例代码是 Guido 本人编写的。因此与他1991年8月附近的经历应该有关。接着找到他的简历中的:

From 1986 till 1991 I was with the Amoeba project,headed by Sape Mullender

发现“Sape”也是人名,基本可以确定是他的同事的名字。接下去搜到这里"Open Software Foundation"文末,Sape Mullender 的电话是+20-592 4139,可以印证例程中的关键变量“tel”应该指的是当时他们的电话号码后四位.

接着找到 Jack 的号码: +31 20 592 4098 !又对上了“4098”

另外还找到 Guido 用过4127这一号码,也许这是 CWI 那时的一个多人号码,就能解释这个代码示例中还有"irv"也映射到了这个号码.

原来,这就是一个电话簿!考虑到Python创造之初,主要用户都是 Guido 的同事,也是当时他写教程的读者,这个示例代码对于他们来说是很容易理解的。但随着几十年 Python 编程语言的推广,它的含义也就被掩埋了.

通过这个例子,就很容易理解,为何英文代码风格中一般不提倡缩写名词。如果原例程中的变量名是“phone”或者“telephone”,也会比“tel”好理解的多。字符串的首字母大写也会更易于理解它们是人名。当然,对国人来说更易理解的当然是使用中文命名标识符:

命名不善的代码会有多坑?这段Python官方入门教程的例程是个典型

随着越来越多的编程教程使用类似上面的中文命名标识符,新手入门的门槛将会更加降低,也为将来在项目中实践中文命名早作准备。


更多用中文编写代码的技术分享文章,请关注本号。


分享到:


相關文章: