在以前,作為一個(gè)剛開始使用Python的開發(fā)者,我時(shí)常為布設(shè)一個(gè)有效的開發(fā)環(huán)境感到困擾。找到一套自己能順暢使用的環(huán)境且為此培養(yǎng)一個(gè)正確的習(xí)慣是很困難的。
之前我一直沒(méi)有意識(shí)到這些事情對(duì)我的工作效率影響有很大的影響,我甚至不知道一些我現(xiàn)在經(jīng)常在開發(fā)中應(yīng)用的很有價(jià)值的習(xí)慣以及工具!隨著我的經(jīng)驗(yàn)增長(zhǎng),我發(fā)現(xiàn)這種情況是普遍存在于Python開發(fā)者中的,包括我的同事,技術(shù)交流大會(huì)上的同好,網(wǎng)絡(luò)論壇上的認(rèn)識(shí)的開發(fā)者以及大量發(fā)郵件向我咨詢的人,可以看出這是一種很常見(jiàn)的現(xiàn)象。
不過(guò)到如今,我相信入門級(jí)的Python程序員是可以通過(guò)應(yīng)用一些重要的技巧和工具到他們的日常工作中來(lái)顯著的提升他們的工作效率的。
這篇文章是用來(lái)幫助你認(rèn)識(shí)并解決五個(gè)在Python開發(fā)配置中常見(jiàn)問(wèn)題的。這些問(wèn)題我之前都曾經(jīng)遇到過(guò)并且曾經(jīng)作為同事和團(tuán)隊(duì)領(lǐng)導(dǎo)幫助他人解決過(guò)。如果你能在開發(fā)中避免這些問(wèn)題,作為你一個(gè)Python開發(fā)者你會(huì)獲得更好的開發(fā)體驗(yàn)并且有更高的開發(fā)效率。
編譯器的歸編譯器
當(dāng)開發(fā)者把時(shí)間用在做一些電腦能做的更好的事情上時(shí),這可以稱之為一種時(shí)間上的浪費(fèi)了,一個(gè)典型的例子就是程序員將時(shí)間花在尋找一些可以被自動(dòng)化工具更準(zhǔn)確定位的bug上。
可能是由于Python動(dòng)態(tài)語(yǔ)言的特性以及早期被視為“腳本”語(yǔ)言的原因,到現(xiàn)在依然很少看到有什么靜態(tài)代碼分析工具和拼寫檢查器用在Python上。
然而此類工具是非常有幫助的,他們基本上能將特定的一類bug和語(yǔ)法錯(cuò)誤完全檢查出來(lái)并提醒開發(fā)者避免犯這些錯(cuò)誤。例如這些工具能找到影響代碼正常編譯的功能性bug像是錯(cuò)誤拼寫的標(biāo)識(shí)符或是發(fā)現(xiàn)一些代碼的質(zhì)量問(wèn)題例如沒(méi)有使用過(guò)的變量和引用。
當(dāng)然我的意思并不是說(shuō)靜態(tài)分析工具就是萬(wàn)能良藥,但至少他們的確幫助我們減少了debug和代碼審查的時(shí)間,也減少了開發(fā)初期的時(shí)間投入。
如果你只想要一個(gè),僅僅一個(gè)工具用來(lái)提升你的Python代碼質(zhì)量,同時(shí)不被錯(cuò)誤的糾正以及啰嗦的提示信息干擾,那么我推薦你使用Pyflakes。Pyflakes是一個(gè)開源的,免費(fèi)的,同時(shí)容易安裝的拼寫檢查工具。
為了更快的得到反饋以及更早的發(fā)現(xiàn)bug,我建議你將Pyflakes集成到你的代碼編輯器和后臺(tái)服務(wù)器上。將自動(dòng)修正代碼錯(cuò)誤的功能融入你的整個(gè)開發(fā)流程能讓你在工作時(shí)更加輕松。不過(guò)請(qǐng)保證你的團(tuán)隊(duì)里所有的開發(fā)者都在使用同一套配置以避免通過(guò)的程序中有未被發(fā)現(xiàn)的告警。
建議1:使用像Pyflakes這樣的靜態(tài)代碼分析工具
避免無(wú)意義的代碼風(fēng)格討論
你的團(tuán)隊(duì)會(huì)在開發(fā)中進(jìn)行代碼審查?那是最好的!但是請(qǐng)注意,沒(méi)有太多經(jīng)驗(yàn)的代碼審查者經(jīng)常犯的一個(gè)錯(cuò)誤是花費(fèi)太多時(shí)間反饋一些自動(dòng)化工具就能幫他們做好的東西。是的,我說(shuō)的就是代碼風(fēng)格問(wèn)題。
開發(fā)團(tuán)隊(duì)在代碼審查時(shí)非常容易陷入一種討論代碼風(fēng)格的情境中,大多數(shù)時(shí)候他們討論的都是諸如“這里應(yīng)該多加一個(gè)空格”或者“類命名應(yīng)該用駝峰命名法”之類的東西。
這是一個(gè)典型的“自行車棚效應(yīng)”注1的例子,它阻止了開發(fā)者去關(guān)注一些真正應(yīng)該被關(guān)注的問(wèn)題,那些會(huì)導(dǎo)致投入更多資金和時(shí)間去維護(hù)的問(wèn)題。
快速解決這些問(wèn)題的方法就是選一個(gè)可以從網(wǎng)上找到的Python代碼風(fēng)格指導(dǎo)手冊(cè),例如PEP8或者Google的Python代碼風(fēng)格指南,然后利用自動(dòng)化工具去確保項(xiàng)目代碼遵從了指南里的風(fēng)格。
我推薦使用以PEP8為基準(zhǔn)風(fēng)格的Pycodestyle或者flake8代碼風(fēng)格檢查工具。他們可以有效避免大多數(shù)的關(guān)于代碼風(fēng)格的爭(zhēng)論同時(shí)能讓你的團(tuán)隊(duì)更加專注在更應(yīng)該關(guān)注的問(wèn)題上。
建議2:選擇一個(gè)特定的代碼風(fēng)格然后用自動(dòng)化工具去保證代碼遵從了這種風(fēng)格
千里之堤潰于蟻穴 - 卡頓和死機(jī)的影響
可用性研究表明網(wǎng)站加載時(shí)間對(duì)用戶是否放棄原先的目的有很大的影響:如果人們對(duì)等待某件事的發(fā)生感到疲倦和不耐煩,則他們放棄他們?cè)扔?jì)劃的事的可能性將大大提高。
作為一個(gè)軟件開發(fā)者,等待各種各樣的工具完成他們的任務(wù)是每天工作過(guò)程中很平常的一部分。畢竟我們經(jīng)常在等待一個(gè)第三方包的安裝,一個(gè)測(cè)試的運(yùn)行或者一個(gè)代碼提交的完成。當(dāng)然我們是不會(huì)每次都“放棄”那些必須等待特定工具運(yùn)行幾秒甚至幾十秒的工作的,對(duì)正在進(jìn)行的工作保持注意力畢竟也是我們工作的一部分。
然而,保持這種程度的專注是很耗神的,而且我們可能因?yàn)檫@種專注耗費(fèi)了過(guò)多的精神力影響了我們?cè)谄渌矫娴墓ぷ鳎豪缭谖绾蟾斓母杏X(jué)到疲憊,或者在自己剛提交的代碼中出了一個(gè)微小的bug。
以我個(gè)人的經(jīng)驗(yàn)來(lái)說(shuō),即使是很微小的卡頓或者延遲在積累之后也會(huì)產(chǎn)生滾雪球般的惡劣影響。在一個(gè)速度很慢的編輯器上切換文件或者是在一個(gè)速度很慢的電腦上切換應(yīng)用都是很煩躁的一件事。我們甚至可以以一種近乎吹毛求疵的態(tài)度去關(guān)注例如編輯器字符輸入延遲之類的細(xì)節(jié)問(wèn)題。因?yàn)槲矣X(jué)得這些微小的延遲也會(huì)產(chǎn)生滾雪球一樣的影響,他們影響了我們的生產(chǎn)效率同時(shí)使人感到煩躁。
我們?cè)O(shè)想一下,在開發(fā)過(guò)程中,你每十秒花了一秒的時(shí)間在等待一個(gè)任務(wù)的完成,這個(gè)時(shí)間的耗費(fèi)累積起來(lái),相當(dāng)于你一周有半天都在等待,或者說(shuō)一個(gè)月有整整兩天,抑或是一年的工作時(shí)間中你有一個(gè)月在等待中過(guò)去了。
也許這種估算有點(diǎn)夸張,但是從另一個(gè)角度看,你花了一個(gè)下午的時(shí)間來(lái)優(yōu)化你的開發(fā)工具導(dǎo)致你的一整年的工作時(shí)間多出來(lái)一個(gè)星期,這樣是否值得你去嘗試改進(jìn)你的工具呢?要我說(shuō)那是必須的!
建議3:你的開發(fā)工具應(yīng)該保持高響應(yīng)速度,簡(jiǎn)單總是好的
4 不要在一個(gè)讓你不舒服的編輯環(huán)境下工作
使用讓我不適應(yīng)的工具工作會(huì)大大影響我的工作效率,我覺(jué)得身為讀者的你應(yīng)該也懂這種感覺(jué)。一些開發(fā)工具非常難以使用,它們會(huì)將你的精力和熱情完全耗盡。
對(duì)你來(lái)說(shuō),什么工具是你認(rèn)為在日常的開發(fā)過(guò)程中最重要的呢?如果要我來(lái)回答,那肯定是我的代碼編輯器。對(duì)有些開發(fā)者來(lái)說(shuō)可能是答案是他們的郵件客戶端或者團(tuán)隊(duì)的聊天應(yīng)用,但我們還是希望一天大部分的工作時(shí)間是用在寫代碼上的。
這就意味著將時(shí)間投入在一個(gè)令人愉悅的代碼編輯環(huán)境中是絕對(duì)值得的,因?yàn)檫@樣做的直接結(jié)果就是更高的工作效率,還有更加愉快的心情!
作為Python開發(fā)者我們有很多編輯器或是IDE工具供我們選擇,例如Vim, Emacs, PyCharm, Wing IDE, Atom, Eclipse PyDev, Sublime Text等等等等。
在經(jīng)過(guò)長(zhǎng)時(shí)間的適應(yīng)和調(diào)整還有對(duì)各種代碼編輯器及IDE的嘗試后,我最終選擇了使用Sublime Text。它的高響應(yīng)速度,簡(jiǎn)單的結(jié)構(gòu)和穩(wěn)定性是我選擇它的原因。它和我現(xiàn)在的編程工作配合的很好。我最終選擇它也是我嘗試了非常多其他的編輯器和IDE之后做出的決定。
你并不需要選擇和我一樣的工具。我所要表達(dá)的意思是你需要找到最適合你自己且符合你獨(dú)特需求的工具去工作。所以請(qǐng)多找一些編輯器去嘗試嘗試看哪種你最喜歡,這對(duì)你的工作效率大有裨益。
建議4:找到適合你的編輯器并把它弄成你需要的樣子
5 在購(gòu)買需要的工具時(shí),不要吝嗇
我曾經(jīng)和一個(gè)使用收費(fèi)編輯器的人一起合作寫代碼。但是這個(gè)開發(fā)者不愿意花錢購(gòu)買這個(gè)編輯器的正式版本,他們用這個(gè)編輯器的試用版來(lái)代替正式版進(jìn)行工作。
而這個(gè)使用版本在你保存文件之后,每隔一兩分鐘就會(huì)跳出一個(gè)彈窗來(lái)提醒你購(gòu)買正式版。這個(gè)開發(fā)者又有經(jīng)常保存文件的習(xí)慣,所以他每天都會(huì)看到這個(gè)彈窗成百上千次......
要和這些彈窗說(shuō)再見(jiàn)需要購(gòu)買一個(gè)70美元的正式版執(zhí)照。雖然我很欣賞勤儉節(jié)約的精神,但是在這件事上我覺(jué)得這樣節(jié)省實(shí)在太荒謬了。在你經(jīng)常使用的開發(fā)工具上摳門和想辦法省小錢是很愚蠢的,我很確定你在處理這些彈窗和由此帶來(lái)的一系列問(wèn)題上的損失絕對(duì)超過(guò)70美元了。
如果你是在為自己工作,則這些執(zhí)照上的花費(fèi)是可以作為商業(yè)費(fèi)用從你的稅費(fèi)中扣除的。如果你是在為某個(gè)公司工作我確信在你解釋清楚為什么需要這些工具且這些工具能有效的提升你的工作效率之后,公司的管理者會(huì)愿意為你在工具上的這筆投入買單的。
和美術(shù)設(shè)計(jì)師或者建筑師相比,程序開發(fā)者花在購(gòu)買軟件開發(fā)工具的許可證上的錢實(shí)在是少多了,甚至有一部分非常棒的工具和編輯器是免費(fèi)的。將錢投入在合適的工具上是很合理的而且你的工作也會(huì)因此受益。
建議5:將錢花在讓你感到舒服和更有效率的工具上是值得的
#從哪里開始實(shí)踐呢?
在上面的內(nèi)容里我已經(jīng)給出了五個(gè)比較容易在開發(fā)中出現(xiàn)并且嚴(yán)重影響工作效率的問(wèn)題。還好大部分這些問(wèn)題相對(duì)容易解決,只要你使用下面這些正確的方法:
建議1:使用像Pyflakes這樣的靜態(tài)代碼分析工具
建議2:選擇一個(gè)特定的代碼風(fēng)格然后用自動(dòng)化工具去保證代碼遵從了這種風(fēng)格
建議3:你的開發(fā)工具應(yīng)該保持高響應(yīng)速度。簡(jiǎn)單總是好的
建議4:找到適合你的編輯器并把它弄成你需要的樣子
建議5:將錢花在讓你感到舒服和更有效率的工具上是值得的
下面是一個(gè)應(yīng)用這些方法很好的開端:找到一個(gè)最讓你感到頭痛的問(wèn)題。將這個(gè)問(wèn)題大而化小的一步步解決,而不是急于求成的一口吃個(gè)胖子,每次解決一個(gè)小問(wèn)題,持續(xù)保持這種狀態(tài),可以看到問(wèn)題已經(jīng)逐漸被你搞定了。
將這些改變視為一種長(zhǎng)線投資--即使是最小的變化也會(huì)在一段時(shí)間后給你的工作效率帶來(lái)顯著提升。以我個(gè)人經(jīng)驗(yàn)來(lái)說(shuō),成功不過(guò)是培養(yǎng)好習(xí)慣和優(yōu)秀思維方式的一種持續(xù)過(guò)程罷了。
一個(gè)好的開發(fā)環(huán)境會(huì)讓你對(duì)解決工作中的問(wèn)題更有信息,也更有效率。當(dāng)你對(duì)你的Python工作環(huán)境感到舒適時(shí),你在工作中會(huì)更加愉快,同時(shí)也能感受到更多樂(lè)趣。祝你好運(yùn)!
注1:自行車棚效應(yīng)是一個(gè)用來(lái)表示程序員之間對(duì)于一些無(wú)關(guān)緊要的細(xì)節(jié)爭(zhēng)論的名詞。
-
python
+關(guān)注
關(guān)注
55文章
4767瀏覽量
84375
原文標(biāo)題:5個(gè)提升生產(chǎn)效率的Python開發(fā)和配置的小技巧
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論