函數(shù)

簡(jiǎn)介

??? 函數(shù)是代碼的靈魂,函數(shù)的好壞直接體現(xiàn)代碼的質(zhì)量,決定代碼的可讀性昔逗。

應(yīng)遵循的規(guī)則

函數(shù)編寫(xiě)應(yīng)該遵循一些基本的規(guī)則。

短小

?????? 冗長(zhǎng)的函數(shù)會(huì)增加代碼閱讀的復(fù)雜性篷朵,極大降低代碼的閱讀速度纤子。函數(shù)編寫(xiě)最主要的規(guī)則是短小。上世紀(jì)的共識(shí)是函數(shù)的長(zhǎng)度不應(yīng)該長(zhǎng)于一屏,而如今隨著顯示技術(shù)的發(fā)展控硼,一些優(yōu)秀的工程師建議函數(shù)長(zhǎng)度不應(yīng)該超過(guò)100行泽论,20行封頂為最佳。在代碼的邏輯中卡乾,時(shí)常包含諸如if,else等邏輯判斷代碼以及while等循環(huán)邏輯代碼翼悴, 合理的建議是這些判斷和循環(huán)邏輯中的代碼塊應(yīng)該只包含一行語(yǔ)句,這行語(yǔ)句一般就是一個(gè)函數(shù)調(diào)用幔妨,如此不但可以保持函數(shù)短小鹦赎,還可以通過(guò)代碼塊中調(diào)用函數(shù)的名稱增強(qiáng)文檔的價(jià)值。函數(shù)不應(yīng)該大到足以容納所有的嵌套結(jié)構(gòu)误堡,函數(shù)的縮進(jìn)層級(jí)不應(yīng)該多于一層或者兩層古话,這樣可以便于代碼的閱讀以及理解。

只做一件事

?????? 強(qiáng)烈建議一個(gè)函數(shù)應(yīng)該只是完成一件事锁施,做好一件事陪踩,只做一件事。函數(shù)內(nèi)的邏輯應(yīng)該清晰明了悉抵,降低代碼間的耦合度肩狂,一個(gè)合理的函數(shù)應(yīng)該是“原子”的,也就是不可以再拆分成多個(gè)函數(shù)姥饰。

合理的抽象層級(jí)

?????? 要想保證函數(shù)只是做好一件事傻谁,那么函數(shù)中的語(yǔ)句應(yīng)該都在一個(gè)抽象層級(jí)上×蟹啵混雜不同抽象層級(jí)的函數(shù)很容易會(huì)讓讀者產(chǎn)生困擾审磁,讀者很可能無(wú)法判斷某個(gè)表達(dá)式是基礎(chǔ)概念還是細(xì)節(jié),而一旦細(xì)節(jié)與基礎(chǔ)概念混雜岂座,更多的細(xì)節(jié)就會(huì)在函數(shù)中糾結(jié)起來(lái)态蒂。我們總是以自頂向下的順序閱讀代碼的。編寫(xiě)代碼時(shí)應(yīng)該時(shí)時(shí)注意向下規(guī)則掺逼,在當(dāng)前函數(shù)中只是描述當(dāng)前抽象層級(jí),并且引用下一層級(jí)瓤介。

使用描述性的名稱

????? 在上一章《有意義的命名》中詳細(xì)講過(guò)函數(shù)的命名吕喘,在這里再次強(qiáng)調(diào)函數(shù)命名要使用描述性的名稱。如果我們堅(jiān)持了上述只做一件事的規(guī)則刑桑,那么我們的函數(shù)就短小氯质、功能集中,函數(shù)越短小祠斧,功能越集中闻察,函數(shù)名稱越好取。花時(shí)間取個(gè)好名字是值得的辕漂,這有助于理清模塊的設(shè)計(jì)思路呢灶。

函數(shù)參數(shù)

???? 函數(shù)的參數(shù)應(yīng)該越少越好,零參是最理想的情況钉嘹,除非有充足的理由鸯乃,要不然不要輕易使用三個(gè)以上的參數(shù)。函數(shù)的參數(shù)越多跋涣,要覆蓋所有情況的測(cè)試用例組合就越多缨睡,這將極大的增加測(cè)試的復(fù)雜性。

減少重復(fù)性

??? 代碼編寫(xiě)最忌諱重復(fù)造輪子陈辱,我們一定要將重復(fù)的代碼抽象出來(lái)組成新函數(shù)以供調(diào)用奖年。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市沛贪,隨后出現(xiàn)的幾起案子陋守,更是在濱河造成了極大的恐慌,老刑警劉巖鹏浅,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嗅义,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡隐砸,警方通過(guò)查閱死者的電腦和手機(jī)之碗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)季希,“玉大人褪那,你說(shuō)我怎么就攤上這事∈剿” “怎么了博敬?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)峰尝。 經(jīng)常有香客問(wèn)我偏窝,道長(zhǎng),這世上最難降的妖魔是什么武学? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任祭往,我火速辦了婚禮,結(jié)果婚禮上火窒,老公的妹妹穿的比我還像新娘硼补。我一直安慰自己,他們只是感情好熏矿,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布已骇。 她就那樣靜靜地躺著离钝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪褪储。 梳的紋絲不亂的頭發(fā)上卵渴,一...
    開(kāi)封第一講書(shū)人閱讀 52,457評(píng)論 1 311
  • 那天,我揣著相機(jī)與錄音乱豆,去河邊找鬼奖恰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛宛裕,可吹牛的內(nèi)容都是我干的瑟啃。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼揩尸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蛹屿!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起岩榆,我...
    開(kāi)封第一講書(shū)人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤错负,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后勇边,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體犹撒,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年粒褒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了识颊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡奕坟,死狀恐怖祥款,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情月杉,我是刑警寧澤刃跛,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站苛萎,受9級(jí)特大地震影響桨昙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜腌歉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一蛙酪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧究履,春花似錦滤否、人聲如沸脸狸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至泥彤,卻和暖如春欲芹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吟吝。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工菱父, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人剑逃。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓浙宜,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蛹磺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子粟瞬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360