《人月神話》出版以來,IT行業(yè)的科技公司們一直苦苦追尋傳說中以一當(dāng)十的超級程序員,最新的研究表明確實(shí)存在這樣一小撮效率奇高的“程序金剛”,但是一位普通程序猿如何能夠蛻變成代碼金剛呢?
近日web開發(fā)專家Christian Maioli總結(jié)了導(dǎo)致程序猿效率低下,代碼像意大利面條一樣難以維護(hù)的35條惡習(xí)(歸為代碼組織、團(tuán)隊(duì)工作、寫代碼、測試與維護(hù)四大類)。
代碼組織
1.總是說“一會(huì)弄好”,但從來不兌現(xiàn)。(缺乏任務(wù)管理和時(shí)間管理能力)
2.堅(jiān)持所謂的高效、優(yōu)雅的“一行代碼流”,事實(shí)上,可讀性才是最重要的,聰明是第二位的。
3.無意義的優(yōu)化。(類似網(wǎng)頁大小之類的優(yōu)化最后再做)
4.不注重代碼樣式和風(fēng)格的嚴(yán)謹(jǐn)。
5.使用無意義的命名。
6.忽略經(jīng)過驗(yàn)證的最佳實(shí)踐(例如代碼審核、TDD、QA、自動(dòng)化部署等,推薦閱讀軟件開發(fā)必讀經(jīng)典著作:Making Software:What Really Works,and Why We Believe It)。
7.給自己埋雷。(例如使用不會(huì)報(bào)錯(cuò)的庫或者忽略例外)
團(tuán)隊(duì)工作
8.過早放棄計(jì)劃
9.堅(jiān)持一個(gè)無效的計(jì)劃
10.總是單打獨(dú)斗。(必須強(qiáng)迫自己與團(tuán)隊(duì)分享進(jìn)度和想法,避免錯(cuò)覺,提高效率)
11.拒絕書寫糟糕的代碼。(日程緊迫的時(shí)候可以寫一些“糟糕”的代碼,這是程序員的能力而不是bug,當(dāng)然,有時(shí)間的時(shí)候一定要回頭償還“技術(shù)債”)
12.抱怨他人。
13.不與團(tuán)隊(duì)分享所學(xué)。
14.向主管/客戶反饋的速度過慢
15.不會(huì)充分利用Google
16.看重個(gè)人編碼風(fēng)格
17.帶著個(gè)人情緒看待他人對自己代碼的評論和注釋
寫代碼
18.不懂優(yōu)化策略
19.使用錯(cuò)誤的工具。
20.不追求對開發(fā)工具和IDE的精熟。
21.忽略報(bào)錯(cuò)消息。
22.迷戀稱手的開發(fā)工具。(不同類型的開發(fā)任務(wù)需要匹配對應(yīng)的最佳開發(fā)工具,例如Sublime適合動(dòng)態(tài)語言,而Eclipse適合Java,如果你喜歡vim或emacs,并不意味著能用這些工具干所有事)
23.不注重代碼中賦值的可配置性。(不養(yǎng)成把代碼中的活動(dòng)部件分離出來的習(xí)慣,會(huì)導(dǎo)致技術(shù)債暴增)
24.喜歡重新發(fā)明車輪。
25.盲目地剪切/粘貼代碼。
26.應(yīng)付差事,不求甚解,不花時(shí)間搞清楚項(xiàng)目運(yùn)作的機(jī)理。
27.對自己寫的代碼過度自信。
28.不去考慮每一個(gè)設(shè)計(jì)、方案或者代碼庫的“副作用”。(一個(gè)成功的用例并不意味著“萬靈藥”)
29.在一個(gè)地方卡住了但堅(jiān)持不呼救。
測試與維護(hù)
30.只去寫能通過的測試
31.重要項(xiàng)目中忽略性能測試
32.不去核實(shí)代碼是否真的可用,沒有養(yǎng)成開發(fā)中及時(shí)快速測試的習(xí)慣。
33.重大改動(dòng)延遲推送
34.拋棄和逃避自己的代碼。
35.忽略其他非功能性需求。(例如安全和性能,準(zhǔn)備一份這方面的清單,忽略這些會(huì)毀掉你的所有成果)
原文地址:Avoid these 35 habits that lead to unmaintainable code
新聞熱點(diǎn)
新聞爆料
點(diǎn)擊排行