最近在幫朋友做一些Python項(xiàng)目的Code Review(代碼審查),發(fā)現(xiàn)主要項(xiàng)目主要有以下幾點(diǎn)問(wèn)題:
沒(méi)有進(jìn)行環(huán)境隔離
由于Python開(kāi)發(fā)常常會(huì)依賴(lài)各種各樣的包凯砍,包之間還存在各種依賴(lài)惕鼓,如果環(huán)境沒(méi)有進(jìn)行隔離筋现,不同版本比如Python2和Python3版本,或者統(tǒng)一Python版本各種包不一致呜笑,常常會(huì)導(dǎo)致各種依賴(lài)問(wèn)題夫否。并且我們電腦上面可能同時(shí)開(kāi)發(fā)多個(gè)Python項(xiàng)目。環(huán)境的依賴(lài)是我們首先要處理的叫胁。
環(huán)境隔離常見(jiàn)?virtualenv(推薦)凰慈,zc.buildout,當(dāng)然本地直接用docker也可以做到方便隔離驼鹅,我們團(tuán)隊(duì)日常開(kāi)發(fā)就是通過(guò)docker開(kāi)發(fā)微谓,測(cè)試,生產(chǎn)環(huán)境進(jìn)行統(tǒng)一的输钩。
沒(méi)有錯(cuò)誤收集報(bào)警
我們?nèi)粘3霈F(xiàn)了錯(cuò)誤是需要馬上定位修復(fù)的豺型,需要一個(gè)錯(cuò)誤反饋機(jī)制來(lái)收集具體錯(cuò)誤上下文,通過(guò)郵件進(jìn)行報(bào)警买乃。如果沒(méi)有一個(gè)這樣的收集工具我們就會(huì)后知后覺(jué)姻氨。
這里面我推薦Sentry,通過(guò)docker進(jìn)行安裝部署這個(gè)工具非臣粞椋快捷肴焊。
格式混亂
很多同學(xué)都能寫(xiě)Python前联,但是不代表能寫(xiě)好,適當(dāng)遵守相關(guān)標(biāo)準(zhǔn)規(guī)范或規(guī)范有助于快速和專(zhuān)業(yè)的Python開(kāi)發(fā)者交流娶眷。
這里我推薦寫(xiě)Python同學(xué)看下Google開(kāi)源風(fēng)格規(guī)范:?http://t.cn/RkcabfS
并且結(jié)合?yapf?和?flake8?來(lái)進(jìn)行批量格式化校驗(yàn)自己代碼格式似嗤,團(tuán)隊(duì)合作在編輯器中加入?editorconfig?文件保證統(tǒng)一格式
沒(méi)有測(cè)試用例
作為一個(gè)嚴(yán)肅的項(xiàng)目,沒(méi)有測(cè)試是不可信的届宠,不僅產(chǎn)品質(zhì)量低烁落,而且迭代的頻率也較低,具體原因大家可以去了解下豌注。
這里主要推薦?unittest/pytest伤塌,mock,tox幌羞,coverage等相關(guān)的測(cè)試工具寸谜。
沒(méi)有自動(dòng)化版本更新工具
由于我們項(xiàng)目迭代發(fā)布需要做很多操作,比如打包属桦,上傳代碼熊痴,備份,更新數(shù)據(jù)表聂宾,重啟服務(wù)等等一些操作果善,手動(dòng)操作很可能忘記其中的一步或者幾步,沒(méi)有自動(dòng)化發(fā)布更新工具效率無(wú)疑是低效的并且是不靠譜的系谐。
這里面主要推薦?Fabric?和?Ansible?等工具
沒(méi)有系統(tǒng)管理工具
在代碼審閱過(guò)程中巾陕,發(fā)現(xiàn)代碼上線(xiàn)之后只是用shell寫(xiě)了腳本 nohup進(jìn)行執(zhí)行的,沒(méi)有Python進(jìn)程管理工具纪他,如果服務(wù)掛掉需要重啟什么的鄙煤,多個(gè)應(yīng)用服務(wù)沒(méi)法做到快速重啟,關(guān)閉等操作茶袒。
這里推薦supervisor這個(gè)工具進(jìn)行服務(wù)批量管理控制梯刚。
其他
比如日志打印不規(guī)范或者不打印,捕獲所有錯(cuò)誤異常薪寓,字符串硬編碼亡资,if else語(yǔ)句過(guò)多,模塊耦合度太高等等這些需要長(zhǎng)期在編碼中積累和學(xué)習(xí)的向叉。
這里主要推薦兩本書(shū):?「代碼整潔之道」?「編寫(xiě)可讀性代碼的藝術(shù)」
雖然我這里主要以Python舉例锥腻,推薦工具也是以Python語(yǔ)言為主,但實(shí)際情況這是接觸新語(yǔ)言新技術(shù)都需要了解的和知道的母谎。
如果能做到上面的幾點(diǎn)瘦黑,你的Python項(xiàng)目及代碼便開(kāi)始變得專(zhuān)業(yè)起來(lái),更多的我們下一篇繼續(xù)聊。
想學(xué)習(xí)python的小伙伴幸斥,記得關(guān)注我+私信回復(fù)【1】找到合適自己的學(xué)習(xí)方案
祝各位小伙伴前途無(wú)憂(yōu)存崖,感謝您的閱讀與關(guān)注!