解決不了bug先放著,這里有40條提升編程技能小妙招
作者:Kesk
機(jī)器之心編譯
參與:魔王
這 40 個(gè)小貼士,或許可以幫你提升編程技能。
如何提高編程技能?恐怕很多開(kāi)發(fā)者思考過(guò)這個(gè)問(wèn)題。最近,擁有將近 15 年開(kāi)發(fā)經(jīng)驗(yàn)的軟件工程師 Kesk -*- 寫(xiě)了一篇博客,列舉了 40 條對(duì)其職業(yè)生涯有所幫助的事項(xiàng)。

或許,通過(guò)以下 40 個(gè)小貼士,你可以提升自己的編程技能。
1. 將大塊代碼拆分成函數(shù)。
2. 下班的時(shí)候還有問(wèn)題沒(méi)解決,請(qǐng)關(guān)上電腦,明天再看。
3. YAGNI 原則(你不會(huì)需要它):只寫(xiě)別人要求你寫(xiě)的功能。不要預(yù)測(cè)未來(lái),只需要盡可能快地完成開(kāi)發(fā)。只編碼解決當(dāng)前問(wèn)題最必要的部分。
4. 你不需要什么都懂,也不需要了解所有框架。最棒的事情莫過(guò)于打好基礎(chǔ)。在開(kāi)始使用一個(gè)框架前先深入了解這門(mén)語(yǔ)言,學(xué)習(xí)基礎(chǔ)的事項(xiàng)(如 SOLID 原則),或者如何寫(xiě)出干凈的代碼。
5. KISS 原則:KISS(保持簡(jiǎn)單和愚蠢)原則表明,大多數(shù)系統(tǒng)保持簡(jiǎn)潔而非復(fù)雜化,就可以運(yùn)行得很好。盡管這很符合邏輯,但有時(shí)候卻很難做到。
6. 不要想太多。
7. 如果你和一個(gè)問(wèn)題或 bug 斗爭(zhēng)了太長(zhǎng)時(shí)間,先離開(kāi)一會(huì)兒,等下再回來(lái)。通常,在離開(kāi)辦公室去往衛(wèi)生間的路上,解決方案就會(huì)出現(xiàn)在腦海里。當(dāng)你對(duì)客戶或同事生氣時(shí),也建議你暫時(shí)離開(kāi)去走走,如果你還想保住工作的話……
8. 學(xué)習(xí)寫(xiě)有用的測(cè)試,學(xué)著用 TDD(測(cè)試驅(qū)動(dòng)開(kāi)發(fā))。TDD 是一種軟件開(kāi)發(fā)流程,它是對(duì)如下簡(jiǎn)短開(kāi)發(fā)周期的重復(fù):寫(xiě)測(cè)試;運(yùn)行所有測(cè)試,查看新的測(cè)試是否運(yùn)行;寫(xiě)代碼;運(yùn)行測(cè)試;重構(gòu)代碼;重復(fù)。
9. 先解決問(wèn)題再寫(xiě)代碼。不要在一籌莫展的時(shí)候開(kāi)始編程。
10. 不要記代碼,而是理解邏輯。
11. 如果你復(fù)制粘貼 Stack Overflow 中的解決方案,請(qǐng)確保自己首先理解它。學(xué)習(xí)用恰當(dāng)?shù)姆绞绞褂?Stack Overflow。
12. 想學(xué)習(xí),先實(shí)踐。創(chuàng)建示例,并使其運(yùn)行,因?yàn)橹煌ㄟ^(guò)閱讀來(lái)學(xué)習(xí)遠(yuǎn)遠(yuǎn)不夠。
13. 研究他人的代碼,也時(shí)不時(shí)讓別人研究你的代碼。結(jié)對(duì)編程并進(jìn)行代碼 review 是不錯(cuò)的想法。
14. 不要重復(fù)造輪子。
15. 代碼是最好的文檔。
16. 了解如何搜索。你需要有經(jīng)驗(yàn),大量閱讀,了解需要找什么。
17. 你寫(xiě)的代碼以后會(huì)由自己或別人進(jìn)行維護(hù),因此寫(xiě)的時(shí)候想著讀者,不要把自己當(dāng)做最聰明的人。寫(xiě)代碼要像寫(xiě)故事一樣。
18. 用谷歌解決錯(cuò)誤的最佳方式是復(fù)制粘貼。
19. 不要放棄,問(wèn)題總能得到解決的。糟糕的時(shí)刻總會(huì)過(guò)去。
20. 好好休息。解決問(wèn)題的最佳方式是先讓大腦得到充分休息。
21. 學(xué)習(xí)使用軟件設(shè)計(jì)模式。設(shè)計(jì)模式是軟件設(shè)計(jì)常見(jiàn)問(wèn)題的解決方案。每個(gè)模式就像一個(gè)藍(lán)圖,你可以依據(jù)它進(jìn)行自定義,進(jìn)而解決自己代碼中的常見(jiàn)設(shè)計(jì)問(wèn)題(記住,不要重復(fù)造輪子)。
22. 盡可能地使用集成工具和自動(dòng)化方式。
23. 練習(xí)編碼套路(code kata):編碼套路是一種編程練習(xí),可以幫助程序員通過(guò)重復(fù)實(shí)踐來(lái)提升技能。示例參見(jiàn):https://codingdojo.org/kata/
24. 編程并達(dá)到接口水平,而不是實(shí)現(xiàn)水準(zhǔn)。依賴注入是必要的,參見(jiàn) SOLID 原則。
25. 重構(gòu)——測(cè)試 - 重構(gòu)。重構(gòu)即對(duì)現(xiàn)有代碼進(jìn)行重建、改動(dòng),在不改變其內(nèi)部行為的前提下提升內(nèi)部結(jié)構(gòu)。
26. 必要的時(shí)候?qū)で髱椭?,不要浪費(fèi)時(shí)間。
27. 多實(shí)踐,熟能生巧。
28. 盡管有時(shí)候注釋可以幫到你,但不要在這上面花費(fèi)太多注意力。注釋可能是過(guò)時(shí)的。
29. 了解自己的開(kāi)發(fā)環(huán)境,并建設(shè)足夠強(qiáng)大的開(kāi)發(fā)環(huán)境,如 IntelliJ。
30. 重用組件。
31. 在開(kāi)發(fā) web 應(yīng)用時(shí),思考移動(dòng)端及其相關(guān)的電量和帶寬限制。
32. 不要過(guò)早地優(yōu)化或重構(gòu)代碼。盡快做出最小可行性產(chǎn)品比較重要。
33. 不要為了節(jié)約幾分鐘,而選擇低效的捷徑。每次寫(xiě)代碼,都要竭盡全力。
34. 遵循文檔標(biāo)準(zhǔn)。
35. 用戶不是技術(shù)人才。開(kāi)發(fā) UI 時(shí)時(shí)刻想著這一點(diǎn)。
36. 經(jīng)常使用 GitHub 或 bitbucket 等源代碼控制系統(tǒng),并頻繁進(jìn)行小的提交更新操作。
37. 使用 log 要比代碼 debug 更好。將所有關(guān)鍵部分記錄下來(lái)。
38. 寫(xiě)代碼時(shí)要保持連貫性。如果你使用一種風(fēng)格,請(qǐng)一以貫之。如果你和多人合作的話,請(qǐng)和整個(gè)團(tuán)隊(duì)使用同樣的風(fēng)格。
39. 不要停止學(xué)習(xí),不止是學(xué)新語(yǔ)言或新框架,還要關(guān)注軟件開(kāi)發(fā)基礎(chǔ)知識(shí)。
40. 最后,保持耐心,保持熱愛(ài)。
原文鏈接:https://medium.com/swlh/40-tips-that-will-change-your-coding-skills-forever-bf9d6b936ccc
戀習(xí)Python 關(guān)注戀習(xí)Python,Python都好練
