代碼簡潔的十條建議

1.命名規(guī)則

  • 所有變量涤躲,方法名和類名都應(yīng)該遵循CamelCase風(fēng)格段审。唯一不同的是抑钟,類名的首字母要大寫妹懒。
class UserService {
    private String firstName;
    
    public String getFirstName() {
        return firstName;
    }
}
  • 常量全部使用大寫字母并且以下劃線分割
final int MAX_AGE = 20;
  • 變量名或者方法名不應(yīng)包含太多單詞雀监。越簡單越好双吆,同時要能表達(dá)出意圖眨唬。
//This is a BAD practice
public void saveUserIntoMongoDBDatabase(User user);
//This is much better
public void saveUser(User user);

2.寫你所想

定義一個變量時不要偷懶,給它一個全名好乐,而不是名字里的一個字母匾竿。變量名應(yīng)該能表達(dá)出他的值。即便你知道這個變量是干嘛的蔚万,并不意味其他開發(fā)者也知道岭妖。同時當(dāng)你過一陣時間再來看這段代碼時,也可能記不起這個變量的含義反璃。
讓我們看看下面的一段代碼:

public boolean check() {
    if (a < max) {
        return true;
    } else {
        return false;
    }
}

這段代碼非常不清晰昵慌,其他開發(fā)當(dāng)然也不明所以。我們重構(gòu)一下淮蜈,看看怎么更好地寫這段代碼斋攀。

public boolean isAgeAcceptable() {
    if (userAge < maxAge) {
        return true;
    } else {
        return false;
    }
}

3. 變量/方法聲明

類的變量應(yīng)該在其頂部聲明。如此一來梧田,你總能知道去哪里看變量的聲明而不是滾動整個文件去尋找淳蔼。
如果一個變量只在一個方法中使用侧蘸,那么將其聲明為一個局部變量即可。
方法聲明的順序應(yīng)該和它們使用的順序一致(從上而下)鹉梨。舉個栗子讳癌,如果一個方法調(diào)用當(dāng)前的方法,那么這個方法應(yīng)該聲明當(dāng)前方法的下面存皂。
同時晌坤,越重要的方法就應(yīng)該聲明在前面。

4. 單一職責(zé)

一個方法應(yīng)該只負(fù)責(zé)一件事情艰垂。如果你的方法同時做啦兩件以上不同的事情泡仗,你應(yīng)該這個方法的一些功能移到其他方法。
這樣的方法才容易理解猜憎,擴(kuò)展和被其他方法復(fù)用娩怎。
舉個栗子,你有一個方法saveUserAndChargeCard()胰柑,將用戶保存到數(shù)據(jù)庫并且刷用戶的信用卡截亦。這個方法不好,因?yàn)樗职?strong>And而且干啦兩件事柬讨。在方法命中避免使用andor等等崩瓤。你可以將這個方法分成saveUser()chargeCard().

5.短方法

對開發(fā)這而言,短方法的長度并沒有一個標(biāo)準(zhǔn)的準(zhǔn)則踩官∪赐埃可能有人說最多10行,有些人說最多五行蔗牡,有些情況下20行也是可以的颖系。所以究竟多少才合適呢?事實(shí)上辩越,并木有一個標(biāo)準(zhǔn)答案嘁扼。盡量使你的方法越短越好。通常5到10行為最佳黔攒。當(dāng)然你的方法有12行或則15行也不會有人打你的趁啸,但是要保證你這15行代碼的可理解性和高質(zhì)量。

6.最小化你的代碼

能用一行搞定的就別用三行督惰。這意味著你寫代碼時考慮下最佳的方式不傅。
看看下面的例子:

boolean hasCreditCard(User user) {
    if (user.hasCard) {
        return true;
    } else {
        return false;
    }
}

乍看之下,好像并無不妥赏胚,但是這段其實(shí)可以簡化一下访娶。

boolean hasCreditCard(User user) {
    return user.hasCard;
}

看到?jīng)],一行抵過五行栅哀,所以下筆前三思囖震肮。

7.重復(fù)是原罪

在你的工程里避免代碼冗余称龙。如果你的方法不能在其他地方復(fù)用,那么想個更好的方式去實(shí)現(xiàn)它戳晌。你的方法應(yīng)該盡可能地通用鲫尊。這也將有助于你的小伙伴直接使用你的方法而不是再去寫一個。

8. 注釋

注釋在以前一段時間內(nèi)都是開發(fā)者的日常操作沦偎,現(xiàn)在有些不同啦疫向,如果你給你的代碼加啦一段注釋,那么說明你的代碼不能自解釋豪嚎,你應(yīng)該選擇一個更好的方法來實(shí)現(xiàn)它搔驼。
注釋存在的另一個問題是,開發(fā)在經(jīng)常去改代碼去忘啦改注釋侈询。
當(dāng)然如果你寫啦一段很復(fù)雜的算法舌涨,你的注釋將幫助其他程序員理解。

9. 代碼檢測工具

即便你采納啦以上的所有建議扔字,我也推薦你使用一些工具來檢查你的代碼質(zhì)量囊嘉。這個工具可以掃描你的代碼,并指出你出錯的地方革为。因?yàn)槟闳斯z查時可能會遺漏扭粱。
其中一個工具是SonarQube.一款代碼質(zhì)量分析的優(yōu)秀產(chǎn)品。

10.最佳實(shí)踐

無論你在實(shí)現(xiàn)什么功能震檩,我想有人在你之前就已經(jīng)做過啦琢蛤。所以在你實(shí)現(xiàn)這個需求之前可以先調(diào)研一下。


翻譯自:10 Tips To Keep Your Code Clean

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末抛虏,一起剝皮案震驚了整個濱河市博其,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嘉蕾,老刑警劉巖贺奠,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霜旧,死亡現(xiàn)場離奇詭異错忱,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)挂据,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進(jìn)店門以清,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人崎逃,你說我怎么就攤上這事掷倔。” “怎么了个绍?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵勒葱,是天一觀的道長浪汪。 經(jīng)常有香客問我,道長凛虽,這世上最難降的妖魔是什么死遭? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮凯旋,結(jié)果婚禮上呀潭,老公的妹妹穿的比我還像新娘。我一直安慰自己至非,他們只是感情好钠署,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著荒椭,像睡著了一般谐鼎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上趣惠,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天该面,我揣著相機(jī)與錄音,去河邊找鬼信卡。 笑死隔缀,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的傍菇。 我是一名探鬼主播猾瘸,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼丢习!你這毒婦竟也來了牵触?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤咐低,失蹤者是張志新(化名)和其女友劉穎揽思,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體见擦,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡钉汗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了鲤屡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片损痰。...
    茶點(diǎn)故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖酒来,靈堂內(nèi)的尸體忽然破棺而出卢未,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布辽社,位于F島的核電站伟墙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏滴铅。R本人自食惡果不足惜远荠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望失息。 院中可真熱鬧譬淳,春花似錦、人聲如沸盹兢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绎秒。三九已至浦妄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間见芹,已是汗流浹背剂娄。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留玄呛,地道東北人阅懦。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像徘铝,于是被迫代替她去往敵國和親耳胎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 用兩張圖告訴你惕它,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料怕午? 從這篇文章中你...
    hw1212閱讀 12,744評論 2 59
  • 1、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,988評論 3 119
  • 作者:Gilberto Najera-Gutierrez譯者:飛龍協(xié)議:CC BY-NC-SA 4.0 簡介 在每...
    三月行者閱讀 1,528評論 0 17
  • 最近因工作不忙淹魄,決定將找對象的事情提上日程郁惜,發(fā)現(xiàn)這是一個找自己的過程。不同的人讓你了解不同的自己甲锡,有時會讓你發(fā)現(xiàn)挖...
    努力生長的小耐閱讀 262評論 0 0
  • 【靜悅敏晨語】早兆蕉!明亮和熱烈的陽光,在拉開窗簾的那刻都會刺到你的眼睛搔体!一切都那么炙熱恨樟、火熱和熱烈半醉!分秒必爭的生命疚俱!...
    靜悅敏閱讀 197評論 0 1