整理了一下編程經(jīng)驗(yàn),以及項(xiàng)目檢視代碼中發(fā)現(xiàn)的常見(jiàn)問(wèn)題庵芭。
特別注意的是:邏輯清晰妹懒,不要簡(jiǎn)單的問(wèn)題復(fù)雜化,不要重復(fù)双吆,沒(méi)有問(wèn)題不要制造問(wèn)題去解決眨唬。
優(yōu)秀的程序員就像一個(gè)老司機(jī),不但自己要遵守規(guī)則伊诵,還要盡量處理別人不遵守規(guī)則的情況单绑。
1、函數(shù)要功能單一
言行一致(接口調(diào)用會(huì)不會(huì)導(dǎo)致未定義問(wèn)題)
不要超過(guò)50行
2曹宴、不要一次性寫(xiě)太多來(lái)不及測(cè)的代碼搂橙,而是要寫(xiě)一段調(diào)試一段
一步一步來(lái),先框架笛坦,后填鴨
3区转、UT和編碼要同步做
UT(Unit Testing)用例要覆蓋到每一行代碼
注意考慮健壯性
好的程序員一定是好的測(cè)試
4、注釋貴精不貴多
注釋要必要版扩,不要寫(xiě)無(wú)關(guān)緊要的注釋
5废离、碰到一堆問(wèn)題時(shí),一次只嘗試解決一個(gè)問(wèn)題
慢就是快
6礁芦、不要過(guò)度依賴debug蜻韭,學(xué)會(huì)從代碼中找問(wèn)題
大膽猜測(cè),細(xì)心驗(yàn)證排除
7柿扣、設(shè)計(jì)模式是個(gè)好東西肖方,但不要強(qiáng)行使用
生搬硬套,得不償失
最重要的是解決問(wèn)題
8未状、沒(méi)造成可觀的損失前不要嘗試做性能優(yōu)化
先實(shí)現(xiàn)功能俯画,再重構(gòu)代碼
不要想一下子想全面了
9、沒(méi)事別重復(fù)造輪子司草,移植別家輪子除外
這應(yīng)該是每個(gè)程序員終其一生都與之奮斗的內(nèi)容
這類問(wèn)題有很多層面艰垂,語(yǔ)句層面、函數(shù)層面埋虹、模塊層面
避免重復(fù)的首要目標(biāo)是降低將來(lái)維護(hù)成本跟風(fēng)險(xiǎn)
10猜憎、復(fù)雜的問(wèn)題簡(jiǎn)單化,不要搞反了
簡(jiǎn)單的代碼才不容易隱藏bug
已經(jīng)達(dá)到100%了搔课,代碼清晰的情況下不要再加層層保護(hù)(指針判斷除外)
11拉宗、不要害怕接觸新知識(shí)
因?yàn)楹ε乱矝](méi)用,不管你愿意不愿意,你現(xiàn)在會(huì)的東西5年后就會(huì)過(guò)時(shí)
12旦事、如果代價(jià)允許魁巩,一個(gè)功能能做到100%,就不要做到99%
剩余1%的維護(hù)成本不是我們能承受的
13姐浮、命名要精確谷遂,統(tǒng)一
不要起別名
14、不要將巧合當(dāng)必然
例如賽季是可配的卖鲤,當(dāng)前配置是一個(gè)禮拜一個(gè)賽季
代碼中不應(yīng)該出現(xiàn)Week字眼, Week只是Season的一種特例
15肾扰、變量傳遞
int firstVar = 0
...
int secondVar = firstVar
// 在此之后,不允許再出現(xiàn)firstVar
16蛋逾、條件判斷
不要放大條件判斷的范圍,下面情況setLevel應(yīng)該提出到判斷之外
if (...){
setLevel(x);
int y = ...;
}
else{
setLevel(x);
int z = ...;
}
17集晚、注意處理邊界問(wèn)題
前車突然變道,能否正確處理区匣?
迎面輪胎飛來(lái)偷拔,能否正確規(guī)避?
側(cè)方巨無(wú)霸并行亏钩,是否存在隱患莲绰?
。姑丑。蛤签。
18、防患于未然——安全性檢查
斷腿好醫(yī)栅哀,牙疼難治震肮。阻撓代碼質(zhì)量的往往是一些設(shè)計(jì)缺陷、安全隱患
平時(shí)沒(méi)有感覺(jué)留拾,發(fā)作起來(lái)往往已經(jīng)病入膏肓戳晌,回天乏術(shù)了
19、培養(yǎng)自己對(duì)代碼的品味
寫(xiě)出好代碼首先要知道什么是好代碼间驮。
強(qiáng)烈建議以下書(shū)籍(編程經(jīng)驗(yàn)2年左右再讀比較合適)
《代碼大全》
《從小工到專家,程序員的修煉之道》
《編程珠璣》【沒(méi)有項(xiàng)目基礎(chǔ)看起來(lái)會(huì)不知所謂】
20马昨、內(nèi)事不決問(wèn)百度竞帽、外事不決問(wèn)谷歌
一般你遇到的問(wèn)題,十有八九也有人遇到過(guò)
21.鸿捧、出現(xiàn)bug主動(dòng)查屹篓,不管是不是你的
這能讓你業(yè)務(wù)能力猛漲、個(gè)人形象飆升;
如果你的bug被別人揪出來(lái).....呵呵匙奴,那是很被動(dòng)很尷尬
22堆巧、提問(wèn)前先做調(diào)研
提不到點(diǎn)上去,浪費(fèi)時(shí)間還容易被鄙視