起因

最近在公司的任務(wù)是寫(xiě)一些簡(jiǎn)單的運(yùn)營(yíng)工具,因?yàn)槭呛苄〉墓ぞ?,所以就用了github上面的一個(gè)開(kāi)源項(xiàng)目flask-admin,可以省去很多的事情。

但是,這個(gè)開(kāi)源項(xiàng)目是個(gè)人維護(hù)的項(xiàng)目,所以文檔相對(duì)簡(jiǎn)單,網(wǎng)上的資料相對(duì)較少,遇到一些產(chǎn)品經(jīng)理要求具體功能并不能直接通過(guò)文檔和例子中的代碼找到答案。所以,我只能通過(guò)閱讀源代碼,重寫(xiě)相關(guān)類(lèi)以及方法實(shí)現(xiàn)了具體的需求。在這個(gè)過(guò)程中,學(xué)習(xí)到了一些東西,同時(shí)整理了自己以前的一些收獲,然后分享給大家,有不對(duì)的地方還望海涵、指正。

閱讀代碼有助于處理bug

閱讀代碼是一項(xiàng)更重要的技能,在大學(xué)編程語(yǔ)言的考試中也有相關(guān)的考察——代碼填空、代碼查錯(cuò)。在工作中用到的地方更多:

  1. 查找bug

  2. 參與到已有的項(xiàng)目

  3. 接手別人的工作

  4. 開(kāi)源項(xiàng)目的二次開(kāi)發(fā)

python是解釋性語(yǔ)言,不需要反編譯就可以看到源代碼,利于查找bug。在找bug的時(shí)候,最重要的是定位bug的位置,比較直觀的bug是通過(guò)閱讀異常可以定位到bug的位置。而有的異常信息,例如:AttributeError: 'NoneType' object has no attribute 'get' 會(huì)讓你覺(jué)得很費(fèi)解,因?yàn)槟惚疽詾檫@個(gè)肯定有值,怎么就是None了呢?這個(gè)時(shí)候,你可以在異常定位的位置前面,把這個(gè)object的值打印出來(lái),重新調(diào)試。察看