立刻見效:成為更好程序員的3條簡(jiǎn)單規(guī)則
本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)
想要練就優(yōu)秀的編程技術(shù)組合需要數(shù)年的試錯(cuò)經(jīng)歷。幸運(yùn)的是,現(xiàn)在有一些小方法可以幫助你很快成為更優(yōu)秀的程序員和更好的團(tuán)隊(duì)成員。
嘗試破壞寫出的代碼
你有責(zé)任親自測(cè)試自己寫出的代碼。公司是否擁有出色的質(zhì)量檢查團(tuán)隊(duì)并不重要,關(guān)鍵是你要對(duì)自己的代碼負(fù)責(zé)。在公司工作的每個(gè)人(無論是軟件開發(fā)人員還是測(cè)試人員)的目標(biāo)都應(yīng)該是盡快交付高質(zhì)量的軟件。打造出色的產(chǎn)品需要整個(gè)團(tuán)隊(duì)的合作。
如果不測(cè)試代碼,那么測(cè)試人員肯定會(huì)發(fā)現(xiàn)你的錯(cuò)誤。他們會(huì)創(chuàng)建故障票,你修復(fù)好故障功能后,將故障票發(fā)回。但是如果還存在問題,就還會(huì)收到故障票。這樣可能會(huì)陷入無止境的錯(cuò)誤循環(huán),雙方都在浪費(fèi)時(shí)間和耐心。仔細(xì)測(cè)試代碼則可以減輕所有人的痛苦,這是你應(yīng)該始終做的事。
這可能是一個(gè)微不足道的變化,但最好還是先測(cè)試下自己的代碼。編程很復(fù)雜,很可能你忽略了一些東西。沒有程序員不會(huì)犯錯(cuò),只需花幾分鐘進(jìn)行測(cè)試就能節(jié)省每個(gè)人的時(shí)間。不管怎么想,請(qǐng)測(cè)試寫出的代碼。如果發(fā)現(xiàn)錯(cuò)誤,就編寫單元測(cè)試以避免將來出現(xiàn)此錯(cuò)誤。
請(qǐng)放下驕傲并嘗試破壞你編寫的代碼,測(cè)試你可以想出的所有不同方案。尋找邊界情況。你了解自己的代碼應(yīng)該做什么以及它應(yīng)該做什么,因此你就是測(cè)試代碼的理想人選。
進(jìn)行小型提交和拉取請(qǐng)求
提交到版本控制存儲(chǔ)庫(kù)以展示代碼的歷史記錄。每個(gè)人都應(yīng)該留下一條有意義的消息,說明進(jìn)行提交的原因。雖然能夠像書一樣閱讀提交歷史有點(diǎn)費(fèi)力,但是對(duì)于試圖了解發(fā)生了什么的人來說,提交歷史應(yīng)該是可讀的。
要做出好的提交,必須將每次提交的范圍縮小。這樣你每次提交的重點(diǎn)就會(huì)放在功能、錯(cuò)誤修復(fù)和重構(gòu)等微小的細(xì)節(jié)更改上。如果提交的內(nèi)容太大,則無法在簡(jiǎn)短的提交消息中對(duì)其進(jìn)行描述,因此代碼歷史記錄將變得更難以閱讀。
小型提交還具有其他優(yōu)點(diǎn),它們更易于測(cè)試,并且如果測(cè)試失敗,也方便調(diào)試,因?yàn)閷?dǎo)致該錯(cuò)誤的代碼更少。小型提交也更容易還原到較早的提交,因?yàn)檫@意味著在還原時(shí)損失的代碼更少。
發(fā)出拉取請(qǐng)求時(shí),應(yīng)遵循相同的規(guī)則??s小拉取請(qǐng)求可以使審閱代碼的人員更徹底、更確定地執(zhí)行代碼。長(zhǎng)達(dá)數(shù)千行并更改數(shù)十個(gè)文件的拉取請(qǐng)求將不會(huì)得到仔細(xì)檢查。如果不檢查拉取請(qǐng)求,最終會(huì)得到較差的軟件。而且,如果別人不審閱你的代碼,你將不會(huì)獲得任何反饋,這會(huì)阻礙你的成長(zhǎng)。
快速構(gòu)建,然后重構(gòu)
編程是一個(gè)復(fù)雜的過程。要成為高效的軟件開發(fā)人員,需要以有組織的方式解決問題。在編寫任何代碼之前,應(yīng)該考慮一些對(duì)于當(dāng)前來說比較關(guān)鍵的幾個(gè)方面。
你想達(dá)到什么目的?你確定自己完全了解要求嗎?花幾分鐘時(shí)間思考需求可以節(jié)省大量時(shí)間。同時(shí)還應(yīng)該確保在項(xiàng)目中(或者正在研究的另一個(gè)項(xiàng)目中)尚未解決此問題。許多功能都是相似的,那些可以使用的經(jīng)過驗(yàn)證的代碼也許可以直接拿來用。最后,必須提出一些解決問題的方法。
思維固然重要,但小心別陷入過度思考的陷阱。當(dāng)對(duì)目前存在的解決方案有所了解時(shí),請(qǐng)選擇最有前途的解決方案并開始編碼。不要試圖讓代碼無懈可擊,也不要嘗試處理所有極端情況,只需完成代碼的關(guān)鍵部分即可。
代碼的第一個(gè)版本不可能是最后一個(gè)版本。即使盡力而為,也必須假設(shè)解決方案存在缺陷。也許它運(yùn)行緩慢、難以閱讀或依賴過多的外部庫(kù)。無論是什么,都必須重構(gòu)。
刪除重復(fù)的部分,尋找更抽象的版本,并在必要時(shí)添加注釋。創(chuàng)建一些單元測(cè)試,以便可以自信地重構(gòu)基本功能。還需考慮代碼是否可能破壞應(yīng)用程序其他部分的內(nèi)容,并且將變量名稱更改為其他人可讀。
盡一切努力創(chuàng)建盡可能好的代碼,這就是成為優(yōu)秀程序員的所有要求。