CM Backup高速開發暫緩了一下,有機會寫一下這段時間以來都幹了些什麼(我總感覺老闆覺得我很清閒,但真的忙趴了)。今晚就不作什麼大總結了,針對一個問題談點心事。
項目需要,用到了Amazon的服務,自然python也就用到了boto(想着不用boto的就不用往下看了,因爲你什麼輪子都自己動手,也沒有所謂的再封裝了)。
用到了boto,然後項目不斷地變大,調用boto的地方也就從1個、兩個變到了10幾個。突如其來的一個需求,需要橫向修改代碼,也就類似什麼Java的什麼AOP思想吧,我懶得到處改一遍(也怕出錯),所以便想着寫一個monkey patch,patch掉那個調用。可惜這個調用真的太複雜了,我在使用boto的時候是會先生成一個類1,再調用類生成一個類2,然後再調用該類2的一個方法,類和方法都是各帶參數。結果是,寫完monkey patch,由於調用的方法會重新一次調用自己,使得這個monkey patch之後的方法會調用兩次。好吧,很難描述清楚。就這樣吧。
反正就是monkey patch失敗,只能手動加了10幾行代碼,幸好沒改錯什麼,也做了自動化測試。
經一事長一智,對於多次依賴外部模塊庫類函數等,應該要自己對這個東東再封裝一次,然後調用自己封裝好的。這樣好處太多了,這樣切片更好地爲日後的統一修改做準備,形成了一個統一的調用接口,像ORM、DAL一樣,做那個層面上的修改,更不影響到各個業務流程。
原文地址:http://blog.csdn.net/zagfai/article/details/38048595