Python编码规范的重要性

很多去 Google 参观的人,在用完洗手间后都有这样的疑惑,马桶前面的门上怎么会贴着Python编码规范?要知道,Google 对编码规范的要求极其严格,这也能从侧面说明编码规范的重要性。

对于编码规范的认知,很多初学者还仅停留在初级阶段,即只知道编码规范有用,比如命名时使用驼峰式的格式(如 TheFirstDemo),而至于为什么要求这样严格,就不是很清楚了。

本节,将给读者扫除以下 2 个盲区:

Python 编码规范到底有多么重要,它对于业务开发来说,究竟有哪些帮助?

有哪些流程和工具,可以强制你遵循规定好的编码规范呢?

注意,在讲解过程,会引用以下 2 个编码规范来举例,分别是:

《8 号 Python 增强规范》,通常称之为 PEP8;

《Google Python 风格规范》 简称为 Google Style,这是源自 Google 内部公开发布的社区版本,其目的是为了让 Google 旗下所有 Python 开源项目的编程风格统一。

以上这 2 个编码规范,Google Style 比 PEP8 更为严格,因为 PEP8 的主要面向群体是个人和小团队开发者,而 Google Style 则能够胜任大团队甚至是企业。

Python编码规范到底有多么重要

Python 编码规范重要性的原因用一句话来概括就是:统一的编码规范可以提高开发效率。

而影响开发效率的有 3 类对象,分别是阅读者、编程者和机器,它们的优先级是阅读者>>编程者>>机器(>>表示远远大于)。

阅读者>>编程者

写过代码的人应该深有体会,在实际工作中真正用来码代码的时间,远比阅读或者调试的时间要少。事实也是如此,有研究表明,软件工程中 80% 的时间都在阅读代码。

因此,如果想提高开发效率,首先要优化的不是码代码的速度,而是阅读代码的体验。

其实,很多编码规范本身就是为优化读者体验而存在的,拿命名原则来说,PEP8 第 38 条规定命名不能是无意义的单字母,有意义的名称可以很大程序提高阅读者的体验。

编程者>>机器

说完了阅读者的体验,再来聊聊编程者的体验。笔者常常见到的一个错误倾向就是过度简化自己的代码,这样做会大大降低代码的可阅读性,并且一旦出现 BUG,也不容易检查出来。

例如,阅读如下这行程序:

result = [(x, y) for x in range(10) for y in range(5) if x*y > 10]

上面这行代码还可以改写成如下这种形式:

result = []
    for x in range(10):
        for y in range(5):
            if x * y > 10:
                result.append((x, y))

以上代码,涉及到了列表和判断循环结构的相关知识,由于还未学到,初学者不需要理解。

对比这 2 种写法,显然后者调理更清楚,更容易理解,编写起来也更轻松。

机器体验也很重要

每个人都希望自己编写的代码能正确、高效地在电脑上执行,但是一些危险的编程风格,不仅会影响程序的正确性,也容易成为代码效率的瓶颈。

例如,PEP8 和 Google Style 都特别强调了,何时使用 is, 何时使用 ==,何时使用隐式布尔转换。不仅如此,Google Style 2.8 还对遍历方式的选择作出了明确限制。

在编程过程中,只要严格遵守编码规范,编写出的代码通常都很健壮,可移植性也很高。

编码规范的自动化工具

既然编码规范的终极目标是提高开发效率。所以,如果每次写代码都需要在代码规范上额外花很多时间,就达不到我们的初衷了。

首先,你需要根据自己的具体工作环境,选择或者制定适合自己公司或团队的编码规范。市面上可以参考的规范,也就是在文章开头提到的 PEP8 和 Google Style。

要知道,没有放之四海而皆准的规范,我们必须要因地制宜。例如在 Google 中,因为历史原因C++不使用异常,引入异常对整个代码库带来的风险已经远大于它的益处,所以在它的 C++ 代码规范中,禁止使用异常。

一旦确定了整个团队所遵从的编码规范,就一定要强制执行,有什么好的办法呢?靠强制代码评审和强制静态或者动态 linter。具体流程是:

在代码评审工具里,添加必须的编码规范环节;

把团队确定的代码规范写进Pylint 里,能够在每份代码提交前自动检查,不通过的代码无法提交。

整合之后,你的团队工作流程就会变成图 1 所示的这样。

image

图 1 自动检查编码规范的工作流程

学到这里,相信你对代码风格的重要性有了全新的认识。

笔记摘自C语言中文网 http://c.biancheng.net/view/5287.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352