日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python代码自动格式化_代码的自动格式化

發(fā)布時(shí)間:2024/9/15 python 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python代码自动格式化_代码的自动格式化 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

代碼格式化是一個(gè)在軟件開發(fā)過程中值得一提的話題。

所謂代碼格式化就是說,程序員在書寫代碼的過程中或者完成代碼開發(fā)后對(duì)代碼書寫格式排版的調(diào)整,使得已經(jīng)完成的代碼變的更美觀整潔也更具有可讀性,也能增加完成代碼后的成就感。

很多時(shí)候代碼格式化的功能甚至都被認(rèn)為是一個(gè)評(píng)價(jià)IDE或者編輯器好壞的主要標(biāo)準(zhǔn)。

不過今天的話題是代碼的自動(dòng)格式化,當(dāng)你了解到代碼的自動(dòng)格式化功能后,也許就不會(huì)以格式化功能來評(píng)價(jià)IDE了。

本文將會(huì)有如下幾個(gè)部分構(gòu)成:什么是代碼自動(dòng)格式化

代碼自動(dòng)格式化有什么好處

如何為自己的工程加入代碼自動(dòng)格式化的功能

后記

參考文獻(xiàn)

本文要求讀者至少能夠使用git來做項(xiàng)目的版本控制,以下的代碼應(yīng)該可以保證在windows(至少需要一個(gè)git bash或者直接安裝cmder) ,linux和mac上運(yùn)行。

什么是代碼的自動(dòng)格式化

當(dāng)我們?cè)谲浖_發(fā)過程中,以某種方式觸發(fā)代碼格式化程序?qū)ξ覀円呀?jīng)完成開發(fā)的代碼進(jìn)行格式修改,這個(gè)過程就是代碼的自動(dòng)格式化。

當(dāng)使用git對(duì)你的項(xiàng)目進(jìn)行版本控制時(shí),我們期望在你完成代碼后,做最終提交前對(duì)代碼的格式進(jìn)行美化,然后形成提交,最終提交到代碼倉庫中。

這樣就可以保證代碼庫里的代碼都是經(jīng)過格式化的,會(huì)讓我們的代碼在review,restructure,merge的過程中更輕松。

代碼自動(dòng)格式化有什么好處

我從別處摘抄來的,簡(jiǎn)單翻譯成中文如下:你不再需要一個(gè)代碼底層樣式指導(dǎo)手則了,因?yàn)榇a自動(dòng)格式化就會(huì)幫你處理這些問題。

使用代碼自動(dòng)格式化能減少非必要的討論,讓開發(fā)者更專注于寫有用的代碼。(似曾相識(shí)啊)

這樣使新人能夠更容易的融入項(xiàng)目,因?yàn)榇a的格式具有延續(xù)性。

因?yàn)榇蠹业母袷蕉际窍嗤?#xff0c;所以能夠減少代碼合并(merge)沖突。

我覺得這個(gè)總結(jié)還算不錯(cuò),我是懶人,當(dāng)提交前忘記格式化代碼,我一般都算了,使用自動(dòng)代碼格式化也可以減少被批評(píng)的數(shù)量。但是說到底靠人來保證一定要怎么樣,這件事還是太天真了。

如何為自己的工程加入代碼自動(dòng)格式化的功能

終于到了本文的重點(diǎn)了。當(dāng)使用git時(shí),代碼自動(dòng)格式化的功能會(huì)通過git的hook(鉤子)來實(shí)現(xiàn)。代碼格式化將被git的pre-commit鉤子調(diào)用,它會(huì)先格式化我們的代碼然后再提交代碼,這樣一個(gè)提交中就不會(huì)存在未被格式化的代碼了。

本文將會(huì)以JavaScript和Python為例說明具體實(shí)現(xiàn)的方式。請(qǐng)讀者至少了解軟件開發(fā)的基本工具,如nvm,node,npm,pyenv等內(nèi)容。

為JavaScript項(xiàng)目增加代碼自動(dòng)格式化

下面是從create-react-app的文檔中摘抄而來,并且做了一些必要的解釋,它不僅可以在react項(xiàng)目里工作,使用了webpack的項(xiàng)目應(yīng)該都是可行的。

第一步,安裝husky,lint-staged,prettier。husky將npm的腳本集成與git的hook上,lint-staged則可以執(zhí)行多個(gè)stage的任務(wù),然后prettier將會(huì)幫助我們格式化代碼。

npm install --save-dev husky lint-staged prettier

在完成安裝后,我們要在package.json文件中的scripts里添加下面的代碼。

"scripts": {

+ "precommit": "lint-staged",

"start": "react-scripts start",

"build": "react-scripts build",

這一步為該項(xiàng)目下npm添加了一個(gè)新的腳本,我們可以通過npm run precommit來調(diào)用。實(shí)際上這個(gè)腳本會(huì)在代碼即將提交前被調(diào)用。

第三步,在package.json中配置lint-staged。

"dependencies": {

// ...

},

+ "lint-staged": {

+ "src/**/*.{js,jsx,json,css}": [

+ "prettier --single-quote --write",

+ "git add"

+ ]

+ },

"scripts": {

我們可以看到lint-stage將會(huì)先使用prettier對(duì)即將要提交的代碼格式化,然后在將這些更改加入到暫存中,然后這些暫存中的代碼就被提交了。

值得一提的是,更多情況下,我們可以去定制prettier的行為,使經(jīng)過它格式化的代碼更加符合我們的品味。下面將給出個(gè)簡(jiǎn)單的配置方法,全部的選項(xiàng)請(qǐng)查閱prettier的文檔。

接下來我們繼續(xù)在package.json中配置prettier的行為。

"dependencies": {

// ...

},

+ "prettier": {

+ "printWidth": 120

+ },

"scripts": {

現(xiàn)在我們將prettier的折行寬度設(shè)置成了120,當(dāng)本行寬度超過120時(shí),prettier才會(huì)幫我們折行,而它的默認(rèn)值時(shí)80。

為Python項(xiàng)目增加自動(dòng)代碼格式化的功能

針對(duì)python我們將使用pre-commit來實(shí)現(xiàn)代碼的自動(dòng)格式化。

首先我們需要安裝pre-commit

pip install pre-commit

你最好將pre-commit加入的你的requirements-dev.txt文件中以便能在開發(fā)過程中使用。

當(dāng)安裝完成后我們需要使用pre-commit來配置git hook。

pre-commit install

接下來就可以開始配置代碼自動(dòng)格式化了。

相較于JavaScript,python在代碼格式化方面有更多的選擇。比如autopep8,它實(shí)現(xiàn)了一個(gè)基于pep8的格式化工具,再比如yapf,是google開發(fā)的一個(gè)python代碼格式化工具,它并不完全遵循pep8。

為了實(shí)現(xiàn)這些功能我們需要在項(xiàng)目的根目錄下增加一個(gè)名為.pre-commit-config.yaml的配置文件。pre-commit將在git提交前調(diào)用該配置中的插件來完成自動(dòng)格式的功能,更詳細(xì)的功能請(qǐng)參考pre-commit的文檔。

下面的例子可以讓我們使用yapf來實(shí)現(xiàn)代碼的格式化:

# .pre-commit-config.yaml

repos:

- repo: https://github.com/pre-commit/mirrors-yapf

rev: v0.23.0

hooks:

- id: yapf

repo配置該插件repo的地址,rev則是該插件repo的版本,id則是插件的id。同樣我們也可以將代碼格式化配置成autopep8。

# .pre-commit-config.yaml

repos:

- repo: https://github.com/pre-commit/mirrors-autopep8

rev: v1.3.5

hooks:

- id: autopep8

給hooks添加參數(shù)

repos:

- repo: https://github.com/pre-commit/mirrors-autopep8

rev: v1.3.5

hooks:

- id: autopep8

args: [--in-place, --aggressive, --aggressive ]

當(dāng)我們使用git commit生成一個(gè)提交時(shí),如果最終的代碼被格式化了,那么git會(huì)提示文件被這個(gè)勾子修改了。這是因?yàn)椴寮臀疫M(jìn)行了自動(dòng)格式化,我們把格式化后的代碼重新提交就可以了。

針對(duì)其他語言

在使用其他語言開發(fā)時(shí),我們一樣可以使用pre-commit來實(shí)現(xiàn)其他語言的自動(dòng)格式化,而且基本上所有的linux發(fā)行版都集成了python,使用非常方便,就請(qǐng)讀者自行來實(shí)現(xiàn)了。

后記

在現(xiàn)代的軟件開發(fā)過程中,提升效率是一個(gè)重大議題,任何細(xì)節(jié)都不應(yīng)該被放過。相比很多大公司都有著完善的軟件開發(fā)流程制度以及方法,小公司還處在刀耕火種階段。單純的人力時(shí)間累計(jì)完全是一種浪費(fèi)生命的做法,在方法上提升才能實(shí)現(xiàn)質(zhì)的突破。以前也沒有正式,所以特地今天寫下此文,希望能夠?qū)髞碚哂行椭?/p>

參考文獻(xiàn)https://github.com/facebook/create-react-app?github.comhttps://medium.com/3yourmind/auto-formatters-for-python-8925065f9505?medium.com

總結(jié)

以上是生活随笔為你收集整理的python代码自动格式化_代码的自动格式化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。