軟件開(kāi)發(fā)32條法則:經(jīng)過(guò)實(shí)踐檢驗(yàn)的實(shí)用建議和經(jīng)驗(yàn)教訓(xùn)
本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)。
過(guò)去的幾年里,筆者一直在為各種大小客戶(hù)專(zhuān)業(yè)開(kāi)發(fā)軟件。一些軟件已經(jīng)在非常嚴(yán)格的環(huán)境中使用了,在這些環(huán)境中,安全性和可靠性是最重要的。根據(jù)多年的經(jīng)驗(yàn),我整理了一些實(shí)用建議。無(wú)需贅言,以下是一些自認(rèn)為實(shí)用的建議、經(jīng)驗(yàn)和優(yōu)秀實(shí)踐。
1. 偶爾寫(xiě)寫(xiě)垃圾代碼沒(méi)關(guān)系,應(yīng)用程序的各個(gè)部分并非都是平等的。
2. 無(wú)需學(xué)習(xí)一門(mén)新的語(yǔ)言來(lái)學(xué)習(xí)新東西,同樣的事情通??梢杂迷S多語(yǔ)言來(lái)完成,深度勝于廣度。
3. 可以編寫(xiě)一次性代碼來(lái)測(cè)試不同的方法,只是不要讓一次性代碼變成生產(chǎn)代碼。
4. 防御性代碼。還記得你認(rèn)為的永遠(yuǎn)不會(huì)為空的方法參數(shù)嗎?是的,事實(shí)證明它為空,你的應(yīng)用程序爆炸了,只需編寫(xiě)這些保護(hù)條款并加以使用即可。
5. 拒絕硬編碼應(yīng)用程序設(shè)置。編寫(xiě)可配置組件并將環(huán)境變量傳遞給它們,重新啟動(dòng)應(yīng)用程序比重新編譯和重新部署更容易。
6. 編寫(xiě)易于測(cè)試的代碼。這意味著停止在命令處理程序、服務(wù)類(lèi)等內(nèi)部“新建”數(shù)據(jù)庫(kù)對(duì)象等等,而是將其轉(zhuǎn)變?yōu)橐蕾?lài)項(xiàng)。
圖源:unsplash
7. 僅在發(fā)生異常情況時(shí)拋出異常。
8. 了解If-Else的合適替代方法。If-Else經(jīng)常被過(guò)度使用,它是設(shè)計(jì)不良的早期跡象,事實(shí)上,許多設(shè)計(jì)模式都不需要If-Else語(yǔ)句。
9. 并非每個(gè)IF都需要ELSE IF或ELSE。
10. 重構(gòu)就是重構(gòu)。在進(jìn)行重構(gòu)時(shí),請(qǐng)勿嘗試添加新功能,相信我,結(jié)果不會(huì)很好。
11. 當(dāng)識(shí)別垃圾代碼時(shí),花點(diǎn)時(shí)間把它清理干凈,使其變得更好——無(wú)論“更好”在特定情況下意味著什么。
12. 若不學(xué)習(xí)設(shè)計(jì)模式將會(huì)遇到困難。它們無(wú)處不在,學(xué)習(xí)它們可以使工作更輕松。
13. 應(yīng)用設(shè)計(jì)模式很可能會(huì)改進(jìn)代碼。
14. 抨擊別人的代碼不會(huì)讓你成為更好的程序員,也不能彰顯你的資歷。初學(xué)者抨擊其他開(kāi)發(fā)人員的代碼的主要原因是,即使是簡(jiǎn)單的概念,他們有時(shí)也會(huì)很難理解。
15. 在需要界面之前不要先創(chuàng)建界面,從具體的類(lèi)開(kāi)始就完全可以了。
16. 確定字段/屬性/方法需要公開(kāi)嗎?不,將其私有化或內(nèi)部化即可。
17. 超級(jí)簡(jiǎn)單的類(lèi)(就像簡(jiǎn)單的方法一樣)是正確的方法。
18. 為簡(jiǎn)單問(wèn)題編寫(xiě)簡(jiǎn)單代碼。
19. 確保對(duì)重構(gòu)的每一部分都進(jìn)行測(cè)試,否則你將不知道自己的問(wèn)題所在。
20. 剛剛記下的代碼并不比具有1100萬(wàn)次下載量的NPM / NuGet / pip程序包更好,下載f * kn程序包并繼續(xù)。
21. 不要害怕為復(fù)雜的問(wèn)題提出復(fù)雜的解決方案,只是要把握好大方向。
圖源:unsplash
22. 你可以選擇幾種語(yǔ)言。嘗試使用后端、前端和數(shù)據(jù)庫(kù)語(yǔ)言,你會(huì)對(duì)團(tuán)隊(duì)其他成員正在處理的事情深深地感激。
23. 停止觀看各種無(wú)用的教程,試著得出有自己的想法。當(dāng)然,當(dāng)遇到問(wèn)題或需要快速學(xué)習(xí)時(shí),偶爾使用教程也可以,只是不要受困于教程。
24. 大多數(shù)開(kāi)發(fā)人員也編寫(xiě)垃圾代碼。不要迷失自己的方向,他們這樣做肯定是有原因的。
25. 觀看開(kāi)發(fā)者大會(huì)演講,追隨思想領(lǐng)袖,可以吸取豐富的經(jīng)驗(yàn)并容易獲得靈感。
26. 在成為更好的開(kāi)發(fā)人員過(guò)程中,每個(gè)人都會(huì)遇到一段停滯期。向有經(jīng)驗(yàn)的開(kāi)發(fā)人員尋求建議,不要害怕向任意一位開(kāi)發(fā)人員發(fā)送消息。
27. 將GUID / UUID用作實(shí)體ID通常會(huì)使事情更容易處理,但請(qǐng)注意要做出的權(quán)衡。
28. 遵守SOLID原則。它們易于理解,可以提高代碼質(zhì)量。諸如“遵守或違背原則無(wú)所謂”之類(lèi)的說(shuō)法會(huì)傷害到你。
29. 如果選項(xiàng)數(shù)量有限,請(qǐng)用字符串枚舉作為參數(shù)。
30. 將代碼排列在模塊中(以.NET術(shù)語(yǔ)表示的項(xiàng)目)。不要將所有內(nèi)容都放在一個(gè)模塊中,這樣很快就會(huì)失控。
31. 記住,要解決的業(yè)務(wù)問(wèn)題或開(kāi)發(fā)的業(yè)務(wù)應(yīng)用程序是最重要的事情。對(duì)于企業(yè)而言,你的代碼只是達(dá)到目的的一種手段。
32. 將軟件開(kāi)發(fā)視為一門(mén)手藝。編寫(xiě)目標(biāo)明確的美觀代碼,積極提高自己的技能。
圖源:unsplash
這只是筆者自己在實(shí)際工作中總結(jié)出來(lái)的經(jīng)驗(yàn)建議,肯定會(huì)有人反對(duì)上面的一些建議,總是會(huì)有不同的意見(jiàn)、方法和心態(tài),多角度考慮是有益的。你要做的是保持批判性,并把你認(rèn)為有意義的內(nèi)容融入到自己的思想行為體系當(dāng)中。
【責(zé)任編輯:趙寧寧 TEL:(010)68476606】