掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流
在以前的文章中,在微信群中,我多次強調(diào),寫函數(shù)的時候,不要把所有參數(shù)放到一個大字典里面作為參數(shù)到處傳,否則時間久了以后,根本不知道字典里面有哪些數(shù)據(jù):

創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網(wǎng)站設計制作、網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的仁壽網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!
def parse(data):
name = data['name']
age = data['age']
xxx = data['xx']
上面這樣寫,對原作者來說確實簡單,但是如果代碼還有別人來維護,他就根本不知道這個字典里面有哪些數(shù)據(jù)。必須要一層一層查找調(diào)用鏈,費時費力。
但我是真的萬萬沒想到,還有比上面這種寫法更傻X的代碼。真的可以稱得上是垃圾中的垃圾。我們來看看下面這段代碼。
現(xiàn)在有一個類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()一樣,直接調(diào)用了一些看起來像是實例屬性的東西,例如上面這個self.something。這些長得像實例屬性的東西,在PyCharm會直接報屬性沒有定義。但是運行卻沒有問題。因為這些something是初始化B類的時候,傳入的那個字典中的key。
外界都在說Python不適合做大項目,因為代碼規(guī)模大了以后難以維護。你們看看上面這段代碼,寫成這個鬼樣子,要容易維護才有鬼了。
我之前就說過:

我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流