Python新手常見(jiàn)的幾個(gè)問(wèn)題以及工具推薦

最近在幫朋友做一些Python項(xiàng)目的Code Review(代碼審查),發(fā)現(xiàn)主要項(xiàng)目主要有以下幾點(diǎn)問(wèn)題:

  1. 沒(méi)有進(jìn)行環(huán)境隔離

由于Python開(kāi)發(fā)常常會(huì)依賴各種各樣的包,包之間還存在各種依賴,如果環(huán)境沒(méi)有進(jìn)行隔離,不同版本比如Python2和Python3版本,或者統(tǒng)一Python版本各種包不一致,常常會(huì)導(dǎo)致各種依賴問(wèn)題。并且我們電腦上面可能同時(shí)開(kāi)發(fā)多個(gè)Python項(xiàng)目。環(huán)境的依賴是我們首先要處理的。

環(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)一的。

  1. 沒(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è)工具非常快捷。

  1. 格式混亂

很多同學(xué)都能寫Python,但是不代表能寫好,適當(dāng)遵守相關(guān)標(biāo)準(zhǔn)規(guī)范或規(guī)范有助于快速和專業(yè)的Python開(kāi)發(fā)者交流。

這里我推薦寫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)一格式

  1. 沒(méi)有測(cè)試用例

作為一個(gè)嚴(yán)肅的項(xiàng)目,沒(méi)有測(cè)試是不可信的,不僅產(chǎn)品質(zhì)量低,而且迭代的頻率也較低,具體原因大家可以去了解下。

這里主要推薦?unittest/pytest,mock,tox,coverage等相關(guān)的測(cè)試工具。

  1. 沒(méi)有自動(dòng)化版本更新工具

由于我們項(xiàng)目迭代發(fā)布需要做很多操作,比如打包,上傳代碼,備份,更新數(shù)據(jù)表,重啟服務(wù)等等一些操作,手動(dòng)操作很可能忘記其中的一步或者幾步,沒(méi)有自動(dòng)化發(fā)布更新工具效率無(wú)疑是低效的并且是不靠譜的。

這里面主要推薦?Fabric?和?Ansible?等工具

  1. 沒(méi)有系統(tǒng)管理工具

在代碼審閱過(guò)程中,發(fā)現(xiàn)代碼上線之后只是用shell寫了腳本 nohup進(jìn)行執(zhí)行的,沒(méi)有Python進(jìn)程管理工具,如果服務(wù)掛掉需要重啟什么的,多個(gè)應(yīng)用服務(wù)沒(méi)法做到快速重啟,關(guān)閉等操作。

這里推薦supervisor這個(gè)工具進(jìn)行服務(wù)批量管理控制。

  1. 其他

比如日志打印不規(guī)范或者不打印,捕獲所有錯(cuò)誤異常,字符串硬編碼,if else語(yǔ)句過(guò)多,模塊耦合度太高等等這些需要長(zhǎng)期在編碼中積累和學(xué)習(xí)的。
這里主要推薦兩本書:?「代碼整潔之道」?「編寫可讀性代碼的藝術(shù)」

雖然我這里主要以Python舉例,推薦工具也是以Python語(yǔ)言為主,但實(shí)際情況這是接觸新語(yǔ)言新技術(shù)都需要了解的和知道的。

如果能做到上面的幾點(diǎn),你的Python項(xiàng)目及代碼便開(kāi)始變得專業(yè)起來(lái),更多的我們下一篇繼續(xù)聊。

想學(xué)習(xí)python的小伙伴,記得關(guān)注我+私信回復(fù)【1】找到合適自己的學(xué)習(xí)方案

祝各位小伙伴前途無(wú)憂,感謝您的閱讀與關(guān)注!


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個(gè) Awesome - XXX 系列...
    小邁克閱讀 3,131評(píng)論 1 3
  • 前言 工作隨筆,方便記起 1.ButterKnife 注解生成器 2.GsonFormat Gson自動(dòng)化 3.T...
    nansir閱讀 387評(píng)論 0 0
  • 感覺(jué)好久沒(méi)有正經(jīng)ds出去工作渾身不得勁。但是只要出去工作了狀態(tài)就回來(lái)了!而且現(xiàn)在也會(huì)實(shí)時(shí)分享。今天交到三個(gè)特別好的...
    甄程很自律閱讀 213評(píng)論 0 0
  • 1.c3p0簡(jiǎn)介 c3p0被設(shè)計(jì)成易于使用。只需要在項(xiàng)目中導(dǎo)入相關(guān)jar包即可,導(dǎo)入相關(guān)包時(shí),需要注意,包的版本的...
    第八共同體閱讀 1,364評(píng)論 0 1

友情鏈接更多精彩內(nèi)容