python 进阶 chapter 2 变量命名

版权声明: https://blog.csdn.net/qq_40244755/article/details/88816748

原因

为什么我会在进阶里谈到变量命名呢?这是源于我在日常生产活动中的真实感受,才会有这么一期。例如举个再真实不过的例子,某日我接手了同事的一个Django项目,现实情况让我很崩溃,因为一个项目中,ta使用了不同的命名方法,如小驼峰命名、大驼峰命名(帕斯卡)、以及下划线命名,对于一个不熟悉的项目的人,光看变量名说实话就够喝一壶的了。当时,我有点崩溃,改变量就花了我不少时间。

好的变量有以下我能想到的优点:

  • 提高代码的可读性
  • 变量的命名能准确表达它的作用,比如 猜出类型, 例如 你用 isBigger 或者 is_bigger ,别人看到你代码时,不用多想就知道这是个bool 变量
  • 方便后期维护

说起代码,人们总免不了讨论起设计模式、框架等等,但真正优秀的代码,是由这些小细节构成的,不积跬步无以至千里 。

在计算机科学领域,有一句著名的格言(俏皮话)

There are only two hard things in Computer Science: cache invalidation and naming things. 

在计算机科学领域只有两件难事:缓存过期 和 给东西起名字

-- Phil Karlton

怎样写出好的变量命名

关于这个,我只讲几个我自己认为好的方面,如有纰漏或是错误之处,还望诸君不吝赐教。

1. 变量应该是描述这个变量的作用的,所以命名要有描述性

如:你使用 day 去描述爬虫抓取的日期,就显得很让人摸不着头脑,
   改成 crawled_day 会让人感觉自然些,并能通过字面意思得到这个变量的作用。 	

2. 好的变量应该能让人猜出类型

为什么要这样做呢,众所周知python是没有 变量值声明的(至少在 PEP 484 出现前),所以好的变量方便阅读者了解变量的类型值。

例子:用我在文章开头举得例子再好不过了:
     is_expired 表达是否过期
     has_crawled 表达是否抓取
     这些 比 用	expired  crawled  高明不少,阅读起来也很舒适呢~     

3. 变量名尽量短,但是绝对不要太短

 例如:
 how_much_crawled_today 这样的变量命名就很拖沓,影响阅读和行代码的字母数,一个好的变量名,长度应该控制在 两到三个单词左右。
 改成 crawled_today 会好些

4. 不要出现 重复性太强的命名

如: user1、 user2、 user3  这样的变量看着就头疼	 

其他,给元组命名

在日常的生产活动中,我们会经常处理元组,为了好的阅读以及便于维护,常常会给元组里面的值命名,众所周知,当你获取元组里的值是用索引去拿的,在不熟悉里面的值的情况下,用索引不是一个好的方法,以下 我提供一下我的思路。

将 数字赋值给变量 如:
   name = 0
   sex = 1
   这样的话你使用       元组[name]  就能得到元组里面的 name了。
   
 第二种 使用collections 里 的 nametuple 方法 from collections import namedtuple

 Student = namedtuple('Student', ['name', 'age', 'sex', 'email'])

 s = Student('Json', '12', 'male', '[email protected]')

 s.name  就是 元组里面 name 的值 Json

代码的优秀与否和好的变量是分不开,写代码可以花多一点时间,思考变量的写法。

猜你喜欢

转载自blog.csdn.net/qq_40244755/article/details/88816748
今日推荐