由系統(tǒng)里殘留的函數(shù),引發(fā)起了一場編碼規(guī)范的討論。
群槍舌戰(zhàn),爭鋒相對(duì),只為更優(yōu)質(zhì)的代碼。老大和同事們的認(rèn)真與熱忱,深深地感動(dòng)了我。從這群平均年齡30+的同事身上,我看到對(duì)他們而言,寫代碼是件很開心的事,而不只是一份養(yǎng)家糊口的工作。
之前還會(huì)有很多的擔(dān)心,害怕自己能力太弱,害怕技術(shù)更新太快。不過,這又怎么樣呢?不會(huì)的東西,去學(xué)就是了。像老大掌握一個(gè)東西,花2天就行,我花1個(gè)月可能還掌握不了。那就用1個(gè)月好了。慢慢跟上,不斷縮小速度就好啦。
起初使用Reload(),后來逐步替換為HotReload()。舊的依舊存在,只是無人問津。
問題:既然目的是替換之前,為啥不直接改名?
簡單完美的方法不用,而留著這樣的包袱。沒有意外就是要背一輩子的了。
關(guān)于編碼規(guī)范,老大極力推薦《程序員修煉之道:從小工到專家》、《編程珠璣》、《代碼大全》
討論內(nèi)容,主要如下:
關(guān)于命名:

絕大多數(shù)情況下, flag handler 等類似的命名是完全沒意義的,約等于 tmp。
這個(gè)命名最大的問題是不夠精準(zhǔn)。名字表現(xiàn)的范圍大于要形容的實(shí)際大小。
何同學(xué)舉得這個(gè)例子特別形象。
如果是一條狗,就不應(yīng)該起個(gè)名字叫animal。
如果明確是京巴,那dog也是不合適的。
關(guān)于重復(fù):
DRY - Don't Repeat Yourself
Simple is perfect.
復(fù)雜問題簡單化,沒有問題絕對(duì)不要?jiǎng)?chuàng)造問題解決。
沒有完美地程序,總要學(xué)習(xí)把握在什么時(shí)候止步。
多一行代碼,多一行風(fēng)險(xiǎn)。即使只是打印一行代碼。
越是復(fù)雜,越容易隱藏問題。
已有的輪子,就盡可能的復(fù)用,而不是新建輪子。
好的代碼是實(shí)現(xiàn)功能,保證一定擴(kuò)展性的情況下減無可減,而不是加無可加。
有很多道理,大家都是知道。但是只有在實(shí)際檢視代碼的時(shí)候,才能更深感受到不好的編碼習(xí)慣帶來的坑,還有好的規(guī)范帶來的好處。
關(guān)于巧合編程:
做好的了功能,不知道怎么做好的
出了bug,不知道怎么錯(cuò)誤的
很像水螅,你戳它一下,他全身都動(dòng)。因?yàn)樗纳窠?jīng)系統(tǒng)沒辦法定位痛點(diǎn)。
關(guān)于重構(gòu):
重構(gòu)遇到的錯(cuò)誤,讓我們現(xiàn)在成了實(shí)實(shí)在在的保守派。已上線的內(nèi)容,即使看起來再別扭難受,只要它還能正常完成工作,就保持不動(dòng)。
我在殺豬的時(shí)候遇到了一些麻煩,因?yàn)槲覍?duì)豬的生理結(jié)構(gòu)不清楚,或是這本來就是一頭畸形的豬,導(dǎo)致我殺的豬很難看。而換一把更快更漂亮的刀,也不能改變內(nèi)部問題。
所謂字如其人,程序員的代碼也是如此。寫過的每一行代碼,都是程序員的臉面。
陳皓說,相對(duì)于編程風(fēng)格糟糕,編程能力高超的程序,他更愿意招一個(gè)編程水平一般,但是編程風(fēng)格良好的程序。做一個(gè)編程水平高端的人,是需要長期不懈努力的,但是給自己做臉,還是能很快看到效果的。
閱讀更多代碼,刻意養(yǎng)成良好的編程習(xí)慣。