成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

七套Python庫快速提升您項(xiàng)目的代碼可維護(hù)性

譯文
開發(fā) 后端
保護(hù)項(xiàng)目未來可維護(hù)性的一種理想方式,在于利用外部庫檢查您的代碼運(yùn)行狀況。以下是目前開發(fā)人員最喜愛的的代碼梳理庫,它們能夠以強(qiáng)制方式執(zhí)行一致性樣式,并確保項(xiàng)目在成熟之后仍具備可接受的測(cè)試覆蓋率。

【51CTO.com快譯】檢查Python代碼的健康狀況,并利用以下外部庫提升其可維護(hù)水平。 

[[238540]]

當(dāng)軟件項(xiàng)目進(jìn)入“維護(hù)模式”時(shí),原本的代碼可讀性與編碼標(biāo)準(zhǔn)往往很難得到保證。(當(dāng)然,這些標(biāo)準(zhǔn)在軟件項(xiàng)目建立之初就不容易堅(jiān)持實(shí)施。)但必須強(qiáng)調(diào)的是,在代碼庫中保持樣式與測(cè)試標(biāo)準(zhǔn)的一致性,正是降低維護(hù)負(fù)擔(dān)的重要前提。只有這樣,我們才能確保未來的開發(fā)人員得以快速了解新的情況,并隨著時(shí)間推移切實(shí)保證項(xiàng)目與應(yīng)用程序的健康狀況。

保護(hù)項(xiàng)目未來可維護(hù)性的一種理想方式,在于利用外部庫檢查您的代碼運(yùn)行狀況。以下是目前開發(fā)人員最喜愛的的代碼梳理庫,它們能夠以強(qiáng)制方式執(zhí)行一致性樣式,并確保項(xiàng)目在成熟之后仍具備可接受的測(cè)試覆蓋率。

檢查您的代碼樣式

PEP 8是一套Python代碼樣式指南,其為行長度、縮進(jìn)、多行表達(dá)式以及命名約定等內(nèi)容提供重要的執(zhí)行規(guī)則。當(dāng)然,您的團(tuán)隊(duì)也許擁有自己的樣式規(guī)則,且其與PEP 8略有不同。

憑借代碼樣式指南都擁有同樣的目標(biāo)——在代碼庫中強(qiáng)制實(shí)施一致的標(biāo)準(zhǔn),從而使其更具可讀性并降低維護(hù)難度。在這方面,以下三套庫能夠幫助大家高效改善代碼質(zhì)量。

1. Pylint

Pylint 是一套用于檢查PEP 8樣式違規(guī)與常見錯(cuò)誤的庫。它能夠與多種高人氣編輯器及IDE良好集成,亦可通過命令行加以運(yùn)行。

您可以運(yùn)行pip install pylint命令以進(jìn)行安裝。

要通過命令行使用Pylint,您需要運(yùn)行 pylint [options] path/to/dir or pylint [options] path/to/module.py。Pylint將向控制臺(tái)輸出關(guān)于樣式違規(guī)以及其他錯(cuò)誤警告。

大家也可以利用 pylintrc配置文件自定義Pylint的錯(cuò)誤檢查。

2. Flake8

Flake8是一款“Python工具,可將PEP 8、Pyflakes(類似于Pylint)、McCabe(代碼復(fù)雜性檢查器)以及其他第三方插件加以結(jié)合,用以檢查Python代碼中的樣式與質(zhì)量。”

要使用Flake8,您需要運(yùn)行 pip install flake8。而后,運(yùn)行flake8 [options] path/to/dir or flake8 [options] path/to/module.py 查看相關(guān)錯(cuò)誤與警告信息。

與Pylint類似,F(xiàn)lake8也允許用戶對(duì)配置文件的檢查內(nèi)容進(jìn)行自定義,其中包含非常清晰的文檔,例如一些實(shí)用的commit hook,用以自動(dòng)檢查開發(fā)流程中的代碼片段。

Flake8能夠集成各類流行編輯器與IDE,但文檔當(dāng)中通常并未提及相關(guān)指令。要將Flake8與您喜愛的編輯器或IDE進(jìn)行集成,請(qǐng)?jiān)诰€搜索相關(guān)插件(例如 Flake8 plugin for Sublime Text)。

3. Isort

Isort是一套庫,能夠按字母順序?qū)δ膶?dǎo)入內(nèi)容進(jìn)行排序并將其拆分為適當(dāng)部分(例如標(biāo)準(zhǔn)庫導(dǎo)入、第三方庫導(dǎo)入、來自您自有項(xiàng)目的導(dǎo)入等)。這將提升代碼可讀性并在模塊中包含大量導(dǎo)入內(nèi)容時(shí)降低查找難度。

要安裝isort,您需要運(yùn)行 pip install isort,而后使用 isort path/to/module.py命令加以運(yùn)行。關(guān)于更多配置選項(xiàng),請(qǐng)參閱 說明文檔。例如,您可以通過isort.cfg文件配置isort如何處理來自某套庫的多行導(dǎo)入代碼。

與Falke8及Pylint一樣,isort同時(shí)提供多款插件以集成各類流行編輯器及IDE。

代碼樣式外包

需要強(qiáng)調(diào)的是,在命令行中手動(dòng)為需要變更的各個(gè)文件進(jìn)行代碼梳理是一項(xiàng)痛苦的工作,大家也可能并不喜歡特定插件在IDE中的運(yùn)行方式。

此外,您的同事可能更傾向于利用不同的插件或者干脆不配合任何插件使用自己喜愛的編輯器; 或者您自己可能不想投入太多心力進(jìn)行代碼梳理并根據(jù)警告內(nèi)容做出調(diào)整。隨著時(shí)間的推移,這一切都可能令您的共享代碼庫變得混亂且難以閱讀。

在這方面,一大理想解決方案是利用庫自動(dòng)對(duì)代碼進(jìn)行重新格式化,從而直接為您傳遞PEP 8內(nèi)容。這里我們推薦的三套庫都擁有不同級(jí)別的自定義能力,亦會(huì)以不同的默認(rèn)方式進(jìn)行代碼格式化。

這些默認(rèn)方式各有優(yōu)劣,因此大家可能需要像使用Pylint以及Flake8那樣對(duì)其進(jìn)行測(cè)試,看看哪些能夠提供最有效的自定義選項(xiàng),又有哪些不可更改的默認(rèn)值比較符合您的要求。

4. Autopep8

Autopep8 能夠自動(dòng)對(duì)您指定的模塊內(nèi)的代碼進(jìn)行格式化。它會(huì)進(jìn)行重新縮進(jìn)、修復(fù)縮進(jìn)、刪除不必要的空格,同時(shí)重構(gòu)常見的比較錯(cuò)誤(例如布爾值與None)。感興趣的朋友可以點(diǎn)擊此處查看其文檔中的完整更正列表。

要安裝Autopep8,您需要運(yùn)行pip install --upgrade autopep8。要對(duì)代碼進(jìn)行重新格式化,需要運(yùn)行autopep8 --in-place --aggressive --aggressive <filename>。其中的aggressive標(biāo)記(及其數(shù)量)表示您希望在代碼樣式上為autopep8提供多少控制權(quán)空間。您可以點(diǎn)擊此處了解關(guān)于aggressive選項(xiàng)的更多細(xì)節(jié)信息。

5. Yapf

Yapf 是另一種代碼重新格式化選項(xiàng),其提供自己的配置選項(xiàng)列表。與autopep8不同,yapf不僅能夠解決PEP 8違規(guī)問題,同時(shí)亦會(huì)重新格式化那些并不違反特定PEP 8規(guī)則的代碼——包括不符合樣式一致性或者存在其他可讀性問題的部分,從而進(jìn)一步提升代碼可維護(hù)性。

要安裝yapf,您需要運(yùn)行 pip install yapf。要對(duì)代碼進(jìn)行重新格式化,需要運(yùn)行 yapf [options] path/to/dir 或者yapf [options] path/to/module.py。您可以點(diǎn)擊此處查看自定義選項(xiàng)的完整列表。

6. Black

Black在代碼重新格式化領(lǐng)域可謂后起之秀。它與autopep8以及Yapf頗為相似,但又有著自己的特點(diǎn)。重點(diǎn)在于,Black提供的自定義選項(xiàng)非常有限。換言之,其基本思路是用戶不應(yīng)對(duì)代碼樣式做出決定,而應(yīng)將決定權(quán)交給Black。當(dāng)然,大家也可以查看有限的自定義選項(xiàng),并將其存儲(chǔ)在配置文件當(dāng)中。

Black要求配合Python 3.6+使用,但亦可對(duì)Python 2代碼進(jìn)行格式化。要使用Black,您需要運(yùn)行 pip install black。要對(duì)代碼進(jìn)行格式化,您需要運(yùn)行: black path/to/dir 或者 black path/to/module.py。

檢查測(cè)試覆蓋率

在編寫測(cè)試的過程中,大家需要確保其能夠?qū)Υa庫中的新代碼進(jìn)行測(cè)試,同時(shí)不致降低您的測(cè)試覆蓋率。盡管測(cè)試覆蓋率百分比并非衡量測(cè)試有效性與充分性的惟一指標(biāo),但其無疑是確保項(xiàng)目遵循基本測(cè)試標(biāo)準(zhǔn)的重要方法之一。為了衡量測(cè)試覆蓋率,我們向您推薦Coverage。

7. Coverage

Coverage擁有多個(gè)選項(xiàng),可用于向您報(bào)告測(cè)試覆蓋率,具體包括將結(jié)果輸出至控制臺(tái)或HTML頁面,并指示哪些行號(hào)存在測(cè)試覆蓋缺失。您可以設(shè)置配置文件以自定義Coverage的檢查內(nèi)容,并降低其運(yùn)行難度。

要安裝Coverage,您需要運(yùn)行pip install coverage。要運(yùn)行程序并查看其輸出結(jié)果,需要運(yùn)行 coverage run [path/to/module.py] [args],而后查看程序的輸出結(jié)果即可。要獲取哪些代碼行未被測(cè)試覆蓋,需要運(yùn)行 coverage report -m。

持續(xù)集成工具

持續(xù)集成(簡(jiǎn)稱CI)是您可以運(yùn)行的一系列流程,用于在代碼合并與部署之前自動(dòng)檢查梳理錯(cuò)誤并給出測(cè)試覆蓋率的最小值。目前有多種免費(fèi)或付費(fèi)工具能夠自動(dòng)完成上述目標(biāo),這里我們就不一一贅述了。不過考慮到持續(xù)集成是實(shí)現(xiàn)代碼可讀性與可維護(hù)性的重要環(huán)節(jié),這里向大家推薦兩種一般性持續(xù)集成工具:Travis CIJenkins

原文標(biāo)題:7 Python libraries for more maintainable code,作者:Jeff Triplett

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

責(zé)任編輯:龐桂玉 來源: 51CTO
相關(guān)推薦

2024-10-30 08:08:45

2025-02-13 00:28:26

2023-07-04 07:30:35

React開發(fā)樣式

2024-04-18 08:39:57

依賴注入控制反轉(zhuǎn)WPF

2024-04-07 10:13:57

C++代碼if-else

2023-10-16 09:30:06

Java代碼

2024-04-16 08:48:14

WPF開發(fā)MVVM庫Prism

2020-04-28 16:12:50

前端JavaScript代碼

2023-10-17 09:19:34

開發(fā)Java

2015-09-07 09:21:32

移動(dòng)應(yīng)用Android平臺(tái)模板

2023-04-28 14:54:57

架構(gòu)開發(fā)React

2023-09-20 23:03:40

C++函數(shù)

2024-10-07 10:00:00

Python代碼編碼

2020-04-24 10:44:45

Scala代碼開發(fā)

2022-06-06 00:43:35

系統(tǒng)架構(gòu)設(shè)計(jì)

2022-12-01 10:08:43

預(yù)測(cè)性維護(hù)物聯(lián)網(wǎng)

2015-12-08 09:13:05

開發(fā)維護(hù)Java項(xiàng)目

2024-01-29 13:58:56

AI模型

2018-09-30 10:00:23

Python編程語言代碼質(zhì)量

2018-02-28 10:11:22

UPS電源預(yù)防
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 草比网站 | 色婷婷综合网 | 99reav| 午夜在线 | 99精品99 | 久久人人网 | 九九热九九 | 美日韩视频 | 日韩www| 欧美福利 | 国产在线一区二区三区 | 日韩中文字幕一区二区 | 久久国产福利 | 亚洲精品黄色 | 国产精品久久久久无码av | 成人激情视频在线观看 | 日本午夜免费福利视频 | 成人综合在线视频 | 日韩在线资源 | 日日碰碰| 欧美成人一区二区三区片免费 | 中文字幕在线一区 | 一区二区视频在线 | 91精品在线播放 | 久久久免费电影 | 91电影在线 | 亚洲综合电影 | 天天夜天天操 | 国产精品亚洲片在线播放 | 一区二区三区视频在线观看 | 日本一区二区在线视频 | 成人av鲁丝片一区二区小说 | 在线观看黄色 | 精品无码久久久久久国产 | 国产精品一区久久久 | 欧美日韩精品亚洲 | 一二三四在线视频观看社区 | 中文字幕久久精品 | 中文字幕精品一区久久久久 | 91精品国产91综合久久蜜臀 | 在线播放亚洲 |