Python工匠善用变量来改善代码质量.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Python工匠善用变量来改善代码质量

Python 工匠:善用变量来改善代码质量 『Python 工匠』是什么? 我一直觉得编程某种意义上是一门『手艺』,因为优雅而高效的代码,就如同完美的手工艺品一样让人赏心悦目。 在雕琢代码的过程中,有大工程:比如应该用什么架构、哪种设计模式。也有更多的小细节,比如何时使用异常(Exceptions)、或怎么给变量起名。那些真正优秀的代码,正是由无数优秀的细节造就的。 『Python 工匠』这个系列文章,是我的一次小小尝试。它专注于分享 Python 编程中的一些偏『小』的东西。希望能够帮到每一位编程路上的匠人。 变量和代码质量 作为『Python 工匠』系列文章的第一篇,我想先谈谈 『变量(Variables)』。因为如何定义和使用变量,一直都是学习任何一门编程语言最先要掌握的技能之一。 变量用的好或不好,和代码质量有着非常重要的联系。在关于变量的诸多问题中,为变量起一个好名字尤其重要。 如何为变量起名 在计算机科学领域,有一句著名的格言(俏皮话): There are only two hard things in Computer Science: cache invalidation and naming things. 在计算机科学领域只有两件难事:缓存过期 和 给东西起名字 — Phil Karlton 第一个『缓存过期问题』的难度不用多说,任何用过缓存的人都会懂。至于第二个『给东西起名字』这事的难度,我也是深有体会。在我的职业生涯里,度过的作为黑暗的下午之一,就是坐在显示器前抓耳挠腮为一个新项目起一个合适的名字。 编程时起的最多的名字,还数各种变量。给变量起一个好名字很重要,因为好的变量命名可以极大的提高代码整体可读性。 下面几点,是我总结的为变量起名时,最好遵守的基本原则。 1. 变量名要有描述性,不能太宽泛 在可接受的长度范围内,变量名能把它所指向的内容描述的越精确越好。所以,尽量不要用那些过于宽泛的词来作为你的变量名: GOOD:?day_of_week,?hosts_to_reboot,?expired_cards BAD:?day,?host,?cards,?temp 2. 变量名最好让人能猜出类型 老司机们都知道,Python 是一门动态类型语言,它(至少在?PEP 484?出现前)没有变量类型声明。所以当你看到一个变量时,除了通过上下文猜测,没法轻易知道它是什么类型。 不过,人们对于变量名和变量类型的关系,通常会有一些直觉上的约定,我把它们总结在了下面。 『什么样的名字会被当成 bool 类型?』 布尔类型变量的最大特点是:它只存在两个可能的值『是』?或?『不是』。所以,用?is、has?等非黑即白的词修饰的变量名,会是个不错的选择。原则就是:让读到变量名的人觉得这个变量只会有『是』或『不是』两种值。 下面是几个不错的示例: is_superuser:『是否超级用户』,只会有两种值:是/不是 has_error:『有没有错误』,只会有两种值:有/没有 allow_vip:『是否允许 VIP』,只会有两种值:允许/不允许 use_msgpack:『是否使用 msgpack』,只会有两种值:使用/不使用 debug:『是否开启调试模式』,被当做 bool 主要是因为约定俗成 『什么样的名字会被当成 int/float 类型?』 人们看到和数字相关的名字,都会默认他们是 int/float 类型,下面这些是比较常见的: 释义为数字的所有单词,比如:port(端口号)、age(年龄)、radius(半径)?等等 使用 _id 结尾的单词,比如:user_id、host_id 使用 length/count 开头或者结尾的单词,比如:length_of_username、max_length、users_count 注意:不要使用普通的复数来表示一个 int 类型变量,比如?apples、trips,最好用number_of_apples、trips_count?来替代。 其他类型 对于 str、list、tuple、dict 这些复杂类型,很难有一个统一的规则让我们可以通过名字去猜测变量类型。比如?headers,既可能是一个头信息列表,也可能是包含头信息的 dict。 对于这些类型的变量名,最推荐的方式,就是编写规范的文档,在函数和方法的 document string 中,使用 sphinx 格式(Python 官方文档使用的文档工具)来标注所有变量的类型。 3. 适当使用『匈牙利命名法』 第一次知道『匈牙利命名法』,是在 Joel on Software 的一篇博文中。简而言之,匈牙利命名法就是把变量的『类型』缩写,放到变量名的最前面。关键在于,这里说的变量『类型』,并非指传统意义上的 int/str

文档评论(0)

dashewan + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档