熱情高漲
代碼走查作為一種流程形式,起初大家的參與熱情非常高漲。
因?yàn)椋约嚎梢詫W(xué)習(xí)到別人一些巧妙的思想,自己的代碼和習(xí)慣都暴漏出來。
這個(gè)過程中不斷地吸收和改正。
但是。。。。。。
我們一開始組織的代碼走查是一個(gè)很重的會(huì)議形式。
參加的人有寫這段代碼的人(小菜)、比較有經(jīng)驗(yàn)的開發(fā)(大佬)
如果為了再隆重一些,請(qǐng)一些領(lǐng)導(dǎo)也參與其中。
但是。。。。。。
我上面提過了,會(huì)議很重,協(xié)調(diào)時(shí)間這個(gè)事情就是一個(gè)很費(fèi)時(shí)間的事情。
還有就是,大家恨不得對(duì)每一句代碼都發(fā)表自己的意見,往往非常的細(xì)枝末節(jié)。
導(dǎo)致會(huì)議時(shí)間經(jīng)常在2小時(shí)以上,3小時(shí)時(shí)間就一般不得不停止。
大家都很累,再就是效果如何呢?
如果小菜自律性不夠,甚至沒人進(jìn)行監(jiān)督,這次的審查的代碼不是都會(huì)修改。
因?yàn)橛幸恍┐_實(shí)太過于雞蛋挑骨頭,根本改不動(dòng)。
熱情褪去
不知不覺中,這種方式慢慢褪去。代碼走查成為了一個(gè)優(yōu)先級(jí)、頻次都不高的活動(dòng)。
有很多原因,上面說的形式太重是一個(gè),還有就是大家都很忙了,沒有進(jìn)行持續(xù)跟進(jìn)導(dǎo)致效果不佳。
但是。。。。。。
也都知道代碼走查對(duì)一些新人來說,成長(zhǎng)史毋庸置疑的。收獲也是毋庸置疑的。
慢慢大家也都放下了。只是每次項(xiàng)目迭代中作為一個(gè)硬性要求執(zhí)行一次罷了。
痛
我們小組里面只有我還有一個(gè)剛畢業(yè)一年多的女生。
在我們組內(nèi)的一個(gè)項(xiàng)目中,我總是以任務(wù)重為由,沒有進(jìn)行代碼走查。這個(gè)持續(xù)了很長(zhǎng)時(shí)間。
一個(gè)字 —— 懶
在處理客戶反饋的問題時(shí)候,我突然發(fā)現(xiàn),她寫的代碼確實(shí)出現(xiàn)了比較粗心的失誤。
我心一想,長(zhǎng)達(dá)3個(gè)月的時(shí)間都沒有對(duì)她的代碼進(jìn)行任何關(guān)注。
于她于我于項(xiàng)目,都是極其不好的。我這塊做得太自私了。
改
于是我在gitlab上加上了 【合并請(qǐng)求權(quán)限】,逼迫她去仔細(xì)思考自己的代碼,逼迫我必須去看她寫得每一行代碼。
合并請(qǐng)求權(quán)限
提交合并請(qǐng)求
代碼走查
其中有規(guī)范、命名、優(yōu)化、風(fēng)格、bug
......
收獲
是的,這些時(shí)間付出是有價(jià)值的。是潛移默化的。很多時(shí)候我們?yōu)榱薘eview一個(gè)問題點(diǎn),討論20分鐘。
一方面深入挖掘她當(dāng)時(shí)的思路:是知識(shí)面問題?還是偷懶?還是知道這樣后期再優(yōu)化?
另一方面,也把我的想法和思路進(jìn)行交流。有幾次是我認(rèn)知就是錯(cuò)誤的,通過討論發(fā)現(xiàn)了更好的實(shí)踐。
其實(shí)代碼Review真的是一種非常好的實(shí)踐,我們不能以我們過來的人的眼光看待新人。
他們有他們的優(yōu)點(diǎn),當(dāng)然他們也很可能會(huì)犯錯(cuò)。我們使用一點(diǎn)時(shí)間,就能把這個(gè)問題給找到,對(duì)我們對(duì)他們都是一件好事。
再加上,代碼review也是把團(tuán)隊(duì)和部門甚至公司的制度流程以及規(guī)范進(jìn)行一種培訓(xùn)。只是換了一種方式。
至少我覺得我是有收獲的,通過幾次交流,成員也說明自己確實(shí)有收獲。
剛剛進(jìn)入社會(huì),剛剛?cè)胄械能浖こ處焸?,不都是自律能力非常?qiáng)的。都有惰性。
通過這樣的形式,讓她感知提升,增加自信心,所以后期很多時(shí)候她都會(huì)把一些好的想法,反過來給反饋給我,我覺得確實(shí)是。于是我就偷偷回去改我的代碼。
這也是一種溝通渠道,我覺得很多時(shí)候軟件就是在解決溝通問題。如何讓溝通做得有價(jià)值,有效率。
進(jìn)
有了收獲,我依然想進(jìn)行再一步的精進(jìn)。找到一本書,能完全肯定我們現(xiàn)在做的事情是一種有價(jià)值事情的書籍。
《代碼整潔之道》 《重構(gòu)2》
規(guī)定時(shí)間里閱讀完一章,找出系統(tǒng)中不好的,并按其思想進(jìn)行修改?;蛘呦到y(tǒng)中已經(jīng)這樣做的,找出來分析一下。時(shí)間不用很長(zhǎng)。
從命名規(guī)范、函數(shù)分解、同一抽象層次分層、硬編碼、效率、類、模塊、甚至文件夾構(gòu)成
為什么要做這些?
首先,我們先不去追蹤復(fù)雜的效率問題,先解決簡(jiǎn)單功能實(shí)現(xiàn),后期有人能看懂的問題。
這些實(shí)踐容易,并且效果明顯。有效果,我們就喜歡更深層次提升,再深入提升,就會(huì)自然而然晉升到了性能層面。
現(xiàn)在我覺得我和成員的一些討論都在討論執(zhí)行效率。因?yàn)榇a的命名、分層已經(jīng)潛移默化養(yǎng)成了習(xí)慣。
有了成就感,就有了動(dòng)力,有了動(dòng)力,再去研究就會(huì)更加主動(dòng)一些。
我也因此偶爾再總結(jié)一下,確實(shí)好的代碼,令人心曠神怡,賞心悅目。更有讀下去的沖動(dòng),甚至更有模范的沖動(dòng)。
K.I.S.S 原則、單一職責(zé)、多用組合少用繼承、最少知道原則等
很多時(shí)候,功能很簡(jiǎn)單,我們卻寫得天花亂墜。
我幻想了一下,如果我們的客戶他喜歡編程,非要看源代碼實(shí)現(xiàn)呢?如果他看到源碼實(shí)現(xiàn)如此簡(jiǎn)單優(yōu)美,心中如何感慨?
有時(shí),我也時(shí)不時(shí)小結(jié)一下。
新人需要我們的指導(dǎo),才能避免一些彎路; 我們也需要不斷回爐鍛造; 對(duì)代碼多一些敬畏和欣賞~
熱門工具 換一換