五種簡單方法助你輕松提升編碼技能
本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)
我在軟件行業(yè)已經(jīng)工作5年了,既和優(yōu)秀的程序員共事過,也見過許多糟糕的程序員。我們被教育編寫代碼以使程序正常運(yùn)轉(zhuǎn),新手通常非常關(guān)注輸出。如果代碼運(yùn)行良好,他們就會(huì)認(rèn)為事情已經(jīng)完成了,部分人甚至在未來的職業(yè)生涯中養(yǎng)成了這種習(xí)慣。
然而,一個(gè)優(yōu)秀程序員所應(yīng)該具有的最重要素質(zhì)之一,就是改進(jìn)自己代碼的能力。本文將討論五種改進(jìn)代碼的技巧,這將幫助新手以及更有經(jīng)驗(yàn)的程序員改進(jìn)他們的編碼。
每個(gè)程序員的編碼方式都不一樣。他們形成了一套自己習(xí)慣的方式來編寫代碼。就像寫字一樣,它是隨著練習(xí)而發(fā)展的,我們需要學(xué)習(xí)如何改進(jìn)這一過程。
把大部分時(shí)間花在分析上
大多數(shù)程序員在查看完需求后就直接開始編碼,這種無知行為在軟件行業(yè)的菜鳥中相當(dāng)普遍。他們通常認(rèn)為編碼是解決方案的主要部分,但事實(shí)并非如此。一位高級(jí)開發(fā)人員曾經(jīng)告訴我:用70%的時(shí)間分析,在剩下的時(shí)間里編碼。
這樣就不必在最后還花時(shí)間修復(fù)故障和優(yōu)化代碼。大多數(shù)人可以通過Google搜索邏輯來編寫代碼,但是一個(gè)真正的程序員知道如何在匆忙進(jìn)行編碼之前進(jìn)行適當(dāng)?shù)姆治觥?/p>
怎么做:
無論何時(shí)處理何事,首先分析現(xiàn)有代碼,運(yùn)行并調(diào)試現(xiàn)有功能。然后必須想出一個(gè)解決方案,在其中可以添加功能而不破壞應(yīng)用程序的現(xiàn)有流程。做到了這一點(diǎn),就可以開始編寫代碼了。
尋找問題的多種解決方案
大多數(shù)程序員都在尋找解決方案。找到之后,他們會(huì)面臨不同的問題。然而,花更多時(shí)間尋找問題的多種解決方案有很多好處:
- 邏輯思維將隨著時(shí)間而增強(qiáng)
- 可以從多個(gè)備選方案中選擇最佳解決方案
- 解決問題的方法將有所改進(jìn)
這種方法將幫助你形成編程后期所需的批判性思維。優(yōu)秀的程序員應(yīng)提供多種解決方案,以便可以根據(jù)速度、內(nèi)存和其他因素選擇最佳方案。
怎么做:
如果無法找到多個(gè)解決方案,可以上網(wǎng)搜索。在StackOverflow和CodeProject等平臺(tái)上,肯定能找到解決問題的替代方法。這樣,你就會(huì)慢慢養(yǎng)成針對(duì)單個(gè)問題尋找更多解決方案的習(xí)慣。
不要只關(guān)注自己的事
至少對(duì)編碼來說確實(shí)如此,你應(yīng)該嘗試定期閱讀其他人的代碼。
正如我所說,每個(gè)人都有獨(dú)特的編碼風(fēng)格。閱讀其他人的代碼將為我們提供更多有益的啟發(fā)。通過閱讀項(xiàng)目團(tuán)隊(duì)中其他開發(fā)人員的代碼,我學(xué)到了很多東西。這也將幫助你了解全局。如果一直自己編寫代碼,那么將不熟悉應(yīng)用程序的其他部分。
怎么做:
一旦完成自己的工作,就開始閱讀其他開發(fā)人員提交的代碼。這將有助于了解他們的思考過程,并進(jìn)一步了解產(chǎn)品。
測(cè)試耐心
單元測(cè)試比大多數(shù)開發(fā)人員意識(shí)到的更加重要。程序員認(rèn)為單元測(cè)試的主要目的是覆蓋代碼,但事實(shí)并非如此。單元測(cè)試可刪除不需要的代碼行,改進(jìn)代碼和程序的整體應(yīng)用性能。
怎么做:
堅(jiān)持為模塊編寫單元測(cè)試用例。努力實(shí)現(xiàn)高達(dá)90%的代碼覆蓋率,并在此過程中刪除不必要的部分。盡量與其他開發(fā)人員討論方案,以免錯(cuò)過任何重要的內(nèi)容。
在更新代碼之前自我充電
如果不了解最新的技術(shù)功能,那么如何確保自己的代碼是最新的呢?大多數(shù)軟件會(huì)隨著時(shí)間的流逝而消亡,正是因?yàn)殚_發(fā)人員忽略了更新代碼以進(jìn)行優(yōu)化。例如下面的C#代碼:
- // Old approachIf (sampleObject != null)
- {
- If (sampleObject.result != null)
- {
- string result =sampleObject.result;
- }
- }
- // New approachIf (sampleObject != null)
- {
- string result = sampleObject?.result;
- }
在舊方法中,首先檢查對(duì)象是否為null,然后檢查該對(duì)象中的特定值是否可用。之后,我們才將該值分配給變量。
在新方法中,使用6.0版中引入的新C#功能。這樣可以直接查詢對(duì)象的屬性。并且在屬性為null的情況下,它不會(huì)引發(fā)null引用異常,而是返回null值。
怎么做:
關(guān)注科技博客,閱讀關(guān)于新功能的文章,并在項(xiàng)目中使用它們。如果可能的話,也嘗試在工作項(xiàng)目中應(yīng)用它們。這有助于自我提升,同時(shí)維持代碼的健康和更新。
不要僅僅滿足于找到解決方案,優(yōu)秀程序員的目標(biāo)是——尋找最優(yōu)解。