怎麼讓你的代碼更Pythonic?光有技巧可不行,你還須要看這些

寫代碼如同寫文章,好的文章是反覆修改出來的,代碼也一樣是反覆的重構出來的。今天給你們分享下,怎麼從一個編程學習者變爲一個程序猿(程序媛)!起碼不要讓別人一看你的代碼就知道你是個小菜鳥!sql

怎麼讓你的代碼更Pythonic?光有技巧可不行,你還須要看這些

 

咱們一般寫一個代碼,必然會通過一個簡單-難-簡潔的過程,那麼在重構的過程當中須要注意哪些呢?編程

一、 代碼能夠正常運行小程序

首先必然要保證,代碼能夠正常運行!設計模式

不論你是直接按邏輯寫下來仍是函數式編程,必須先能實現你的代碼功能,能夠正常運行起來性能優化

二、 精簡代碼,提升可讀性cookie

當你的代碼能夠運行起來之後,接着就要從新讀一遍代碼,如下幾個方面是須要優化的地方:數據結構

  • · 你的代碼是否遵循了pep8原則,好比命名,每一行代碼長度等等,這些細節要處理好
  • · 函數的重構,返回值、缺省值等等,要保持函數式功能單一原則
  • · 有沒有過多的if else嵌套,是否能夠提取
  • · 全局變量有沒有大寫,有沒有寫到開頭

三、 代碼註釋完整多線程

代碼初步精簡事後或者過程當中,順手將註釋寫一下是一個很好的習慣併發

代碼是要先給人看,而後纔會給機器運行!因此註釋是一個很是重要的東西,有的同窗不是很喜歡寫註釋,以爲很麻煩,那麼若是這個代碼很短,那麼確實能夠不寫,可是若是你的代碼很長,成百上千行,不寫註釋會讓你很懵逼!分佈式

四、 異常處理齊全,代碼很健壯

代碼有時效性!尤爲在爬蟲上更是深有體會,如今能夠正常運行的代碼,過段時間可能由於網頁改版,或者cookie、sql語句等等的變更,均可能會致使你的代碼報錯,咱們要提早將這些問題考慮進去,這就須要異常處理機制了,注意如下幾點:

  • · 若是是爬蟲,是否須要寫上cookie的相關函數,若是須要ip代理,是否考慮了代理ip的時效性
  • · 循環遍歷的時候是否有考慮錯誤,好比獲取了空列表
  • · If分支是否考慮齊全,有沒有else的狀況
  • · 文件讀寫是否有try語句,是否考慮存儲位置的問題
  • · 拿到一個句柄,好比SSH,SQL,這樣有沒有考慮到句柄的有效性

代碼全部的異常可能都須要考慮,以此來保證代碼的健壯!

五、 配置文件

咱們在剛纔寫好了全局變量,如今能夠將這些全局變量放入一個配置文件中,來實現和接口分離,下降耦合度。對於用戶來講只要改配置文件就好了。好比能夠把整個的全局變量放到一個config.py裏面,而後在主程序裏面用from config import * 這樣的話,對後續的修改方便不少。

若是能夠,寫一個Redeme文檔,將你的代碼中用到環境、版本、配置配置文件等等信息都寫入裏面,對人對己都是很方便的!

六、 各個單元功能完善,測試各類分支迴路

程序雖然寫好了,無論你的程序是幾十行的小程序小腳本,仍是幾千上萬行的項目,測試用例是必定要設計。

簡單的程序能夠設一些斷言assert,看一些有無異常,對於複雜的邏輯,必定要針對性的設計多個分支迴路反覆測一下代碼。

七、 添加日誌功能

有同窗說上面6步以後,我感受代碼已經很不錯了,這麼還有優化!Python的代碼不少都是在服務區上運行的,你總不能一直都是print吧,尤爲是對大型的程序,沒有日誌怎麼行,建議用logging模塊進行日誌的記錄

八、 性能優化

結構優化和線程、進程、協程、分佈式等等提早設計好

若是你處理的任務僅僅是幾百上千,對性能要求不高,對實時性要求也不高那還好。若是你要處理幾十萬條數據呢!這個時候必定要考慮併發的處理,究竟是用多進程,仍是多線程,線程池,仍是用協程,須要思考!

固然性能上的優化並不單是單線程變多線程,還有數據結構的優化,好比何時該用列表,何時用元組,哪種對內存消耗少,查詢快。

九、 函數變類

爲了讓咱們的代碼更加易於擴展,適應變化!咱們須要用類把變量和函數進行封裝,設計一些接口,那些是對外開發的,那些是對外封閉的。

哪些用靜態函數包裹,哪些用實例方法。是否是須要用一些裝飾器來簡化代碼。

相同類別的函數,進行整合,合併要一個類裏面。

多個功能用多個類來表示,方便維護和擴展。

類與類之間,考慮他們的內在關係。用組合仍是繼承,用一些簡單的設計模式,根據程序的特性用好比工廠模式,觀察者。

怎麼讓你的代碼更Pythonic?光有技巧可不行,你還須要看這些

相關文章
相關標籤/搜索