2

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

 1 year ago
source link: https://www.kingname.info/2023/01/01/trash-code/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

2023-01-01

13

598

2 分钟

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

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可以防止这个人捣乱。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK