1. 程式人生 > >這7大神器, 讓你的Python 代碼更易於維護

這7大神器, 讓你的Python 代碼更易於維護

read 文檔 喜歡 結構 最大 公眾號 縮進 rep 代碼風格

當軟件項目進 入“維護模式”時,對代碼的可讀性和編碼標準經常就忽略了(甚至從一開始就沒有建立起這些標準。)但是,在代碼庫中保持一致的風格和測試標準是減少維護負擔的重要因素,它能確保未來的開發人員能夠快速了解新的項目情況 - 並保持項目的良好運行

 保護項目未來可維護性的一個好方法就是使用外部庫來檢查你的代碼運行狀況。以下是我們最喜歡的一些用於檢查代碼的庫(包含檢查PEP 8和其他樣式錯誤),讓代碼風格保持一致,並確保在項目成熟時的測試覆蓋率保持在可接受範圍。

檢查你的代碼風格

PEP 8是Python代碼風格規範,它對行長度,縮進,多行表達式和命名約定等內容有明確的規範。你的團隊可能也有自己的代碼規則,可能與PEP 8略有不同。但是,任何代碼風格都是為了在代碼庫中強制實施一致的標準,使其更具可讀性,從而更易於維護。這裏有三個庫來幫助美化你的代碼。

1、 Pylint

Pylint 是一個 Python 代碼分析工具,它分析 Python 代碼中的錯誤,查找不符合代碼風格標準(Pylint 默認使用的代碼風格是 PEP 8)和有潛在問題的代碼。 。它與幾個流行的編輯器和IDE很好地集成,也可以從命令行運行。

要安裝,請運行 pip install pylint 。

要從命令行運行 Pylint,請運行 pylint [options] path/to/dir 或 pylint [options] path/to/module.py 。Pylint 會向控制臺輸出不符合代碼風格標準以及錯誤代碼的地方

你還可以調用 pylintrc 配置文件來自定義 Pylint 檢查的錯誤。(項目地址: https://www.pylint.org/ )

2、Flake8

Flake8是一個“Python工具,它將PEP8,Pyflakes(類似於Pylint),McCabe(代碼復雜性檢查器)和第三方插件集合在一起,以檢查某些Python代碼的風格和質量。”

要使用Flake8,要先運行 pip install flake8 。然後運行 flake8 [options] path/to/dir 或 flake8 [options] path/to/module.py 查看其錯誤和警告。

與Pylint一樣,Flake8允許對配置文件檢查的內容進行一些自定義。它有非常清晰的文檔,包括一些有用的Commit,可以作為開發工作流程的一部分自動檢查代碼。

Flake8能夠與流行的編輯器和IDE集成,但這些指令通常在文檔中並沒有說明。要將Flake8與你喜歡的編輯器或IDE集成,可以在線搜索插件(例如 Sublime Text的Flake8插件)。(項目地址: http://flake8.pycqa.org/en/latest/ )

3、Isort

isort 可自動對 Python的 import語句進行排序和分段。可將大量的 import結構轉成非常適合閱讀的排版。(例如,標準庫導入,第三方庫導入,從你自己的項目導入等),這樣可以提高可讀性,而且如果你導入的庫較多,還能快速找到各個庫

安裝 isort pip install isort ,然後運行 isort path/to/module.py 。文檔中提供了許多配置選項。例如,你可以配置 isort如何處理.isort.cfg文件來執行一個庫的多行導入。

與Flake8和Pylint一樣,isort還提供了將其與流行的編輯器和IDE集成的插件。(項目地址: https://github.com/timothycrosley/isort )

分享你的代碼風格

記住從命令行手動為每個文件運行linters是一件很痛苦的事情,你可能也不太喜歡通過運行 IDE 中某個插件來實現這個功能。另外,您的同事可能更喜歡別的方式,或者可能他們最喜歡的編輯器的沒有這個插件,或者你檢查代碼不夠細致,久而久之,你們共享的代碼庫將變得混亂並且難以閱讀。

一個很好的解決方案是使用一個庫,自動將代碼重新按照PEP 8規範進行格式化。我們推薦的三個庫都有不同的自定義級別來控制如何格式化代碼,像pylint的和Flake8,你要先測試,看看它是否存在你接受不了卻無法更改的默認配置。

4、 Autopep8

Autopep8可以自動格式化你指定的模塊中的代碼。它將重新縮進行,修復縮進,刪除無關的空白,並重構常見的比較錯誤(如布爾和None值)。你可以在它的文檔中查看完整的更改列表

安裝Autopep8,需要先運行 pip install --upgrade autopep8 。要重新格式化代碼,請運行 pip install --upgrade autopep8 。然後執行 autopep8 --in-place --aggressive --aggressive <filename> 就可以重新格式化你的代碼。該aggressive標誌(和它們的數量),表明autopep8對你的代碼風格有多少控制權。(項目地址: https://github.com/hhatto/autopep8 )

5、 Yapf

Yapf是重新格式化代碼的另一種選擇,它帶有自己的配置選項列表。它與autopep8的不同之處在於它不僅僅解決了違反PEP 8規範的問題。它還重新格式化了沒有違反PEP 8規範的代碼,但沒有一致地設置樣式,可能是為了可讀性而格式化得更好。

要安裝Yapf,需要運行 pip install yapf 。要重新格式化代碼,要運行 yapf [options] path/to/dir 或 yapf [options] path/to/module.py 。(項目地址: https://github.com/google/yapf )

6、 Black

在所有的代碼檢查工具中,Black算是比較新的一個。它與autopep8和Yapf類似,但限制比較多,它很少有自定義選項,這是重點,這意味著你無法自定義代碼風格。

Black支持Python 3.6+以上的版本,但可以格式化Python 2代碼。要使用Black,請運行 pip install black 。要美化您的代碼,請運行: black path/to/dir或black path/to/module.py 。(項目地址: https://github.com/ambv/black )

檢查代碼的測試覆蓋率

假如你正在編寫測試,你需要確保對代碼庫提交的新代碼進行測試,並且不會降低代碼的測試覆蓋率。雖然測試覆蓋率的百分比不是衡量測試有效性和充分性的唯一指標,但它是確保項目中遵循基本測試標準的一種方法。為了測量測試覆蓋率,我們有一個建議:使用 Coverage 這個庫。

7、Coverage

Coverage有多種向你報告測試覆蓋率的方式,包括將結果輸出到控制臺或HTML頁面,並提示哪些行號沒有覆蓋到。你可以設置配置文件以自定義Coverage檢查的內容並使其更便於運行。

要安裝Coverage,請運行 pip install coverage 。要運行程序並查看其輸出,請運行 coverage run [path/to/module.py] [args] ,接著你將看到程序的輸出。要查看哪些代碼行沒有被覆蓋,請運行 coverage report -m 。(項目地址: https://coverage.readthedocs.io/en/latest/ )

持續集成工具

持續集成(CI)是在合並和部署代碼之前,自動檢查代碼風格錯誤和測試最小覆蓋率的一系列過程。有許多免費或付費的工具可以自動化這個過程,本文這裏就不詳細介紹了。但是,由於設置CI過程是將代碼塊刪除為更易於閱讀和維護的重要步驟,因此,你不得不重視。

————————————————————————————————————
想了解更多前沿技術,想獲取最新免費編程資源視頻源碼筆記,小夥伴請往下看!

qun號是:八×××,六三四,八四五。qun內有很多開發工具,很多幹貨和技術資料分享!

如果您覺得此篇文章對您有幫助,歡迎關註微信公眾號:大禹編程,您的支持是對我最大的鼓勵!共同學習,共同進步:

這7大神器, 讓你的Python 代碼更易於維護