五个简单的原则,带你写出整洁代码
每個(gè)人都有自己對(duì)于代碼的看法,有自己的偏好。對(duì)于我來說,也是如此。作為一個(gè)實(shí)用主義者,我遵循的東西,比較少,也比較簡單。多了,記不住,也不實(shí)用。
?
避免預(yù)先設(shè)計(jì)的代碼
架構(gòu)往往得預(yù)先設(shè)計(jì)的,而代碼容易被過度設(shè)計(jì)。而事先設(shè)計(jì)的架構(gòu),往往在落地的時(shí)候,會(huì)遇到一系列的挑戰(zhàn)。等到軟件交付時(shí),則會(huì)變成新的架構(gòu),或者該架構(gòu)的變體。代碼,則也是類似的。
日常工作中,我們經(jīng)常遇到的情況,到底有沒有必要提前編寫一些代碼——這些功能往往是,我們根據(jù)以往經(jīng)驗(yàn),猜測未來會(huì)有的功能?不事先編寫,那么后期修改就比較麻煩。事先編寫的代碼,不符合需求,那么后期還是得重寫。只有運(yùn)氣剛剛好,我們才能編寫出符合需要的代碼。然而,多數(shù)時(shí)候,我們寫的這些代碼往往是用不上的。
一旦代碼中有大量多余的代碼,代碼看上去就沒那么整潔了。若非要在兩者做一個(gè)平衡,便是多做一點(diǎn)點(diǎn),如先把接口準(zhǔn)備好,但是不實(shí)現(xiàn)相應(yīng)的功能。
IDE 重構(gòu) vs 手工重構(gòu)
整潔的代碼,意味著不重復(fù),而每個(gè)人對(duì)于重復(fù)的定義是不一樣的。對(duì)于我來說,則是:事不過三,過三則重構(gòu)。耦合和參數(shù),會(huì)帶來新的復(fù)雜度。重構(gòu),不是一件容易的事,也不是一件太困難的事。
手工重構(gòu)QQ號(hào)碼拍賣代碼,意味著風(fēng)險(xiǎn)。如果沒有測試,直接對(duì)代碼進(jìn)行重構(gòu),那么就會(huì)生不如死。
IDE 重構(gòu)代碼,則是依賴于 IDE 自帶的功能,以通過機(jī)器的方式來重構(gòu)代碼。與手工方式相比,它更加的可靠,并且風(fēng)險(xiǎn)相當(dāng)?shù)牡汀G疤崾?#xff0c;該語言有對(duì)應(yīng)的 IDE 可以提供這個(gè)功能,如 WebStrom、Intellij IDEA 等。
短、平的函數(shù)
編寫函數(shù)的時(shí)候,要注意長度要短~、一個(gè)函數(shù)完成一件事,并且避免多級(jí)嵌套。
長的函數(shù),閱讀體驗(yàn)不好。多層嵌套的函數(shù),復(fù)雜度過高。
采用各種 Lint 來限制函數(shù)的長度、層嵌套的數(shù)量,是一種頗為有效的降低復(fù)雜度的方式。
適當(dāng)?shù)脑O(shè)計(jì)模式與原則
設(shè)計(jì)模式和各種原則是好東西,它們可以方便我們與其他/她開發(fā)人員進(jìn)行交流。當(dāng)你遇到一個(gè)一對(duì)多的問題,別人一說,”你這個(gè)東西用觀察者模式來實(shí)現(xiàn)”,那么問題就這么解決了。
設(shè)計(jì)模式,是一系列對(duì)于相關(guān)問題的解決方案。缺少編程經(jīng)驗(yàn)的時(shí)候,學(xué)習(xí)設(shè)計(jì)模式,是一個(gè)不錯(cuò)的提升方式。而問題的關(guān)鍵,在于如何在適當(dāng)?shù)臅r(shí)候使用它們。在這個(gè)過程中,我們經(jīng)歷這么一些情況:
- 不知道設(shè)計(jì)模式
- 拿著設(shè)計(jì)模式的錘子(定律),到處使用
- 對(duì)設(shè)計(jì)模式反感,會(huì)避免使用
- 自然而然的使用設(shè)計(jì)模式
編程語言在解決問題上是相通的,哪怕是不同范式的設(shè)計(jì)語言,要解決的問題是一樣的,采用的設(shè)計(jì)模式也就類似。
命名而非注釋
命名,對(duì)于程序員來說,是一個(gè)難題。
一個(gè)好的變量名、函數(shù)名,遠(yuǎn)遠(yuǎn)比一行行注釋,更重要——代碼是寫給人看的。
閱讀遺留系統(tǒng)代碼的時(shí)候,最怕的不是又長又深的代碼,而是代碼中有個(gè) 42 這種魔法數(shù)字(magic number),又沒有對(duì)應(yīng)的注釋。那怕得打出幾個(gè)電話、發(fā)幾十條信息,才能知道這該死的 42 到底是什么。
哪怕是使用錯(cuò)誤的單詞,將 42 賦予這個(gè)變量,如 var ratio=42,也遠(yuǎn)比 42 + 對(duì)應(yīng)的注釋擁有更好的可讀性。特別是,如果到處是這個(gè) 42 的變量,只會(huì)使得到處都是相關(guān)的注釋。同樣的,這個(gè)問題,也出現(xiàn)在對(duì)于函數(shù)的命名上。好在我們對(duì)于函數(shù)的命名,會(huì)略微重視一些。
結(jié)論
你還有哪些奇技淫巧呢?
總結(jié)
以上是生活随笔為你收集整理的五个简单的原则,带你写出整洁代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UE4中的主要材料和光线跟踪
- 下一篇: 在游戏里模拟天空的颜色,太迷人了!