

编写 Python 代码时要有所取舍
source link: http://developer.51cto.com/art/202101/642889.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本文是 Python 之禅特别系列的一部分,重点此篇着眼于第七、八、九条原则:可读性、特殊情况和实用性。
软件开发是一门充满了取舍的学科。每一个选择,都有一个同样合理但相反的选择。将一个方法私有化?你在鼓励复制粘贴。将一个方法公开?你在过早地对一个接口做出承诺。
软件开发者每时每刻都在做艰难的选择。虽然 Python 之禅 中的所有原则都在一定程度上涵盖了权衡,但下面的原则对一些权衡进行了最艰难、最冷酷的审视。
可读性很重要
从某种意义上说,这一中间原则确实是整个 Python 之禅的中心。这条原则与编写高效的程序无关。在大多数情况下,它甚至与编写健壮的程序也无关。它讲的是编写出别人能读懂的程序。
阅读代码,就其本质而言,发生在代码被添加到系统中之后。通常,它会发生在很久很久以后。忽略可读性是最简单的选择,因为它对现在没有伤害。无论添加新代码的原因是什么,它都会对现在造成影响,无论是一个令人痛苦的 bug 还是一个被强烈要求的功能。
如果面对巨大的压力,把可读性扔到一边,只管“解决问题”,而 Python 之禅提醒我们:可读性很重要。编写代码让它适合阅读,无论是对自己还是他人,都是一种慈悲。
特殊情况不足以违反规则
总是有各种借口:这个 bug 特别麻烦,先简单处理一下吧;这个功能特别紧急,别管美观了;这种情况下所涉及的领域规则特别复杂,嵌套深点也没关系。
一旦我们对特例的借口妥协,大坝就会破裂,就丧失了原则;事情就会演变成一个疯狂麦克斯的荒诞症,每个程序员都会为自己试图找到最好的借口。
纪律需要承诺。只有当事情艰辛、有强烈的诱惑时,才是对一个软件开发人员的考验。总是有合理的借口来破坏规则,这就是为什么必须坚守规矩的原因。纪律就是向例外说不的艺术。没有任何解释可以改变这一点。
虽然,实用性胜过纯洁性
“如果你只想着击打、弹跳、撞击、触碰敌人,你将无法真正打倒他。” —— 《宫本武藏:水之卷》
归根结底,软件开发是一门实用的学科。它的目标是解决真实的人所面临的实际问题。实用性比纯粹性更重要:首先,我们必须解决问题。如果我们只考虑可读性、简单性或美观性,我们将无法真正解决问题。
正如宫本武藏所说的,每一次代码修改的首要目标应该是解决问题。这个问题需要我们心心念念地去解决它。如果我们不以解决问题为目标,只想着 Python 之禅,我们就辜负了这些原则。这是 Python 之禅所固有的另一种矛盾。
【责任编辑:未丽燕 TEL:(010)68476606】
Recommend
-
77
关于取舍、关于保守,恳求集思录过来人指导! - 一、先上两个问题:1)在公共食堂吃饭,用已经消毒清洗好的筷子,会不会感到不适? 自己买新筷子,使用却发现该筷尽管经过消毒清洗但已被别人用过,会不会感到不适?2)买一新车,却发现是二手车改装的,会不会...
-
51
2019年3月份,水滴公司宣布获得由腾讯领投,高榕资本、IDG资本、DST Global创始人尤里·米尔纳等知名投资人跟投5亿元B轮融资。 6月12日...
-
22
在比较区块链技术时,我们并不需要花费很多时间就可以发现这种技术中存在部落主义。 自2009年以来,我一直在从事区块链技术的研究,我发现一件有帮助的事情是思考人们可以做出的所有 设计权衡 。 这不像“最快”,“最具扩...
-
17
加法与减法,高频打低频:拼多多的取舍场长阿尔法工场创始人只关...
-
6
深究AMD R7 3700X,了解大厂英特尔与AMD处理器如何取舍!深究AMD R7 3700X,了解大厂英特尔与AMD处理器如何取舍! 2021-03-16 17:08:54 来源:硬派科技 摘要:很多人盲目奔着华丽的外包装选取产品,但使用...
-
2
人生是不断取舍的过程 2019-04-03 如果问工作以来我悟出的最重要的观念是什么,那就是,人生是一个不断取舍的过程。 我们总是在作自己未来的规划和目标的时候说,我想要什么,而忽略了问自己...
-
12
Previously前两篇文章(缓存稳定性 和 缓存正确性)跟大家讨论了缓存的『稳定性』和『正确性』,缓存常见问题还...
-
8
V2EX › NAS NAS 和 EXSI 的取舍 hanssx · 9 小时 22 分钟前 · 1996 次点击 需求:
-
6
聚焦目标,取舍有道 - 关于设计中的权衡与决策 明明是周六,但是怎么都觉得是周日啊,因为明天要上班...眼下看着宰相刘罗锅...上次看还是初一的时候,1996年;故意暴露年龄了噜。短暂...
-
4
对于任何对技术和软件感兴趣的人来说,GitHub 都是绕不开的资源宝库。然而,在 GitHub 的使用方式上,人们却似乎以「懂」和「不懂」开发分为明显的两派:开发人员会除了会高频使用基于 git 版本管理功能,也更乐意打开他人项目的源代码一探究竟;而一般用户则大多纯...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK