长见识,让大家看看什么是垃圾代码

这是「进击的Coder」的第 708 篇技术分享

作者:kingname

来源:未闻 Code

阅读本文大概需要 3 分钟。

在以前的文章中,在微信群中,我多次强调,写函数的时候,不要把所有参数放到一个大字典里面作为参数到处传,否则时间久了以后,根本不知道字典里面有哪些数据:

def parse(data):
    name = data['name']
    age = data['age']
    xxx = data['xx']

上面这样写,对原作者来说确实简单,但是如果代码还有别人来维护,他就根本不知道这个字典里面有哪些数据。必须要一层一层查找调用链,费时费力。

但我是真的万万没想到,还有比上面这种写法更傻 X 的代码。真的可以称得上是垃圾中的垃圾。我们来看看下面这段代码。

现在有一个类 A,里面有两千多行代码。还有一个类 B,里面有三千多行代码。这两个类里面有一些实例方法,有 700 多行代码。这些我都忍了。

更要命的是,初始化类B的时候,需要传入一个字典。这个字典有 80 多个 Key。并且,他们是下面这样写的。

B 类在 xxx.py 文件里面:

class B:
    def __init__(self, query_dict):
        for key, value in query_dict.items():
            setattr(self, key, value)
        ....

A类在yyy.py文件里面,它的代码是这样写的:

...
class A:
    def __init__(self, instance): # instance是类B的实例对象
        self.__dict__.update(instance.__dict__)
    def method_x(self):
        print(self.something)
    ...

A 类中,有很多地方就像实例方法methid_x()一样,直接调用了一些看起来像是实例属性的东西,例如上面这个self.something。这些长得像实例属性的东西,在 PyCharm 会直接报属性没有定义。但是运行却没有问题。因为这些something是初始化 B 类的时候,传入的那个字典中的 key。

外界都在说 Python 不适合做大项目,因为代码规模大了以后难以维护。你们看看上面这段代码,写成这个鬼样子,要容易维护才有鬼了。

我之前就说过:

  1. 如果是一个人写项目那用 Python 又快又好。

  2. 如果是很多个非常厉害的人写项目,用 Python 也是又快又好。

  3. 如果很多人中,但凡有一个人是拖后腿捣乱的,那还是别用 Python 了,用 Java 可以防止这个人捣乱。

1c0440b91906cb3f20656589e1df527f.png

End

崔庆才的新书《Python3网络爬虫开发实战(第二版)》已经正式上市了!书中详细介绍了零基础用 Python 开发爬虫的各方面知识,同时相比第一版新增了 JavaScript 逆向、Android 逆向、异步爬虫、深度学习、Kubernetes 相关内容,‍同时本书已经获得 Python 之父 Guido 的推荐,目前本书正在七折促销中!

内容介绍:《Python3网络爬虫开发实战(第二版)》内容介绍

ad8b45f98f882a585af4fbc687e5a4dc.jpeg

扫码购买

82679b6827895e38cc7f8cfda396a2b1.png

好文和朋友一起看~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值