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

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

牛小排

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

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可以防止这个人捣乱。
目录
相关文章
|
4月前
|
机器学习/深度学习 自然语言处理 算法
代码的前世今生详细介绍
7月更文挑战第20天
47 0
|
6月前
|
Java 测试技术 开发工具
写代码中的一些“小技巧”
写代码中的一些“小技巧”
|
6月前
|
前端开发 Java C++
一行代码就能完成的事情,为什么要写两行?
一行代码就能完成的事情,为什么要写两行?
记一次代码评鉴
前言 近期公司组织了一次代码评鉴,在这边记录下学习到的一些规范吧
|
存储 分布式计算 并行计算
聊聊什么代码是好代码
聊聊什么代码是好代码
最近特火的爱心代码来了
最近因为一部《点燃我温暖你》的电视剧而爆火的爱心代码不会还有人不会制作吧。
最近特火的爱心代码来了
不要傻乎乎的去找不同了,一起来用代码完成“找不同”游戏吧
不要傻乎乎的去找不同了,一起来用代码完成“找不同”游戏吧
583 0
不要傻乎乎的去找不同了,一起来用代码完成“找不同”游戏吧
|
数据可视化 开发工具 git
如何给你的代码祝寿?
前段时间 alibaba/x-render 突破 3K Star,一直寻思着怎么给开源社区贡献的同学做一个小礼物来“祝寿”,然后就想到了之前玩过的 gource 和 avconv 这两个库(参数不熟悉可查文档,此外不多加解释),前者用于处理提交日志可视化,后者用于视频处理。
这一团糟的代码,真的是我写的?!
阿里妹导读:你有没有遇到过这种情况:过几周或者几个月之后,再看到自己写的代码,感觉一团糟,不禁怀疑人生?我们每天都与代码打交道,但当被问道什么是好的代码时,很多人可能会先愣一下,然后给出的回答要么比较空泛,要么比较散,没办法简单明了地概括出来。今天,我们就来说什么是好的代码?
28873 0
|
程序员 数据库
【评论】好代码不值钱
导读: 原文来自geekm.ag 上一篇《 Good code is cheap code》,由国内整理编译《好代码不值钱》。作者认为好的程序员和伟大的程序员之间的区别就在于伟大的程序员理解他们的模式。
874 0