前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >揪出代码的坏味道

揪出代码的坏味道

作者头像
TalkPython
发布2022-11-21 13:29:33
4780
发布2022-11-21 13:29:33
举报
文章被收录于专栏:TalkPython

导致程序崩溃的代码显然是错了,但崩溃并不是衡量程序问题的唯一指标。代码里的通常会隐藏一些漏洞或不可读的代码

代码的坏味道指的是一种揭示潜在问题的代码模式。这种坏味道并不意味着一定存在问题,但它说明该优化程序的时候了。

几种常见的代码坏味道:

- 重复代码

- 魔数

- 注释掉的代码和死代码

- 打印调试

- 带有数字后缀的变量

- 本该是函数或者模块的类

- 嵌套列表解析式

- 空的except块和糟糕的错误信息

坏味道代码带来的问题

1、重复代码

重复的代码之所以被认为有问题,是因为它使修改代码变得困难:对重复代码的一个副本做出修改,就必须对重复代码的每一个副本都做出修改。如果你忘了在某个地方进行修改,或者对不同副本进行了不同的修改,程序可能就会出错。重复代码长期维护来说是一种噩梦。

2、魔数

魔数没有表明数字的目的,降低了代码的可读性,使其难以维护,而且容易出现难以察觉的拼写错误。比如下面的例子;

expiration = time.time() + 604800

这段代码中的数字,我们就不知道为何意。

3、注释掉的代码和死代码

注释过的代码和死代码都是代码的坏味道,因为它们会形成误导,让程序员认为这些代码是程序的可执行部分。

4、打印调试

打印调试是指在程序中临时调用print()显示变量的值,然后重新运行程序的做法。很多人误认为打印调试快速简单,但实际上为了获得用以修复错误的信息,通常需要多次重复运行程序。这种调试效率实际很低。

5、带有数字后缀的变量

这样的变量名,数字后缀并不能很好地描述这些变量所包含的内容以及它们之间的差异。

6、嵌套列表解析式

列表解析式是创建复杂列表值的一种简单方法。嵌套列表解析式(或者集合/字典解析式)在少量的代码中包含了大量的复杂性,降低了代码可读性。

优化坏味道的方法

1、重复代码

解决重复代码的方法是去重,简单地说,通过把代码放在一个函数或者循环中,使其在代码中只出现一次。

2、魔数

解决方法是使用常量替代魔数。

3、注释掉的代码和死代码

需要删除它们,并使用版本控制系统,比如使用Git或者Subversion来跟踪变化。

4、打印调试

解决方法是利用调试器或者为程序设置日志文件。使用调试器可以逐行运行程序中的代码并检查所有变量,可能看起来这么做比简单地插入print()调用要慢,但从长远看更能节省时间。

日志文件可以记录程序的大量信息,能够用来比较一次运行产生的信息和以往运行的信息。

5、带有数字后缀的变量

如果在一系列的变量中使用数字后缀,那么可以考虑用某种数据结构代替它们,比如列表或字典。

6、嵌套列表解析式

最好的办法是把列表解析式扩展到一个或者多个for循环中。

最后,我们要正视代码的坏味道,有些代码的坏味道根本不是真正的坏味道。举两个例子,

1、函数应该仅在末尾处有一个return语句。

2、函数最多只能有一个try语句。

以上这些都算不上坏味道,因此我们在实际工作中,要识别坏味道。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 TalkPython 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档