如何編寫清晰的函數(shù)

最近重新在讀《clean code》,讀到第三章函數(shù),里面列舉出了很多編寫函數(shù)的準(zhǔn)則,比如:

1. 短小

2. 只做一件事

3. 函數(shù)最好不要有參數(shù)

...

第一次讀的時候,會把這些準(zhǔn)則記下來,就像學(xué)生時代去記課本一樣,自從看了一些批判性思維書籍之后,會帶著一些問題來看待這些原則,比如:

1. 短?。ǘ嚅L的函數(shù)算短小,為什么函數(shù)需要短?。?/p>

2. 只做一件事 (什么叫一件事,比如是吃飯算一件事,還是點菜,下單,吃飯,結(jié)賬各算一件事,為什么只做一件事)

3. 函數(shù)最好不要有參數(shù)(為什么不要帶參數(shù))

...

有了問題之后會在書中尋找答案,尋找作者的論據(jù),發(fā)現(xiàn)其實作者很多準(zhǔn)則是依據(jù)經(jīng)驗總結(jié)得出,無法得出條條框框的原因,這個時候就無法去相信作者的結(jié)論,但是可以去思考作者的理由,或者是是什么樣原則推導(dǎo)出這些準(zhǔn)則出來的。

前些天看了一篇文章中也提到,平時像GOF這些設(shè)計模式是術(shù),而面向?qū)ο蟮乃季S才是道,有了道之后在遇到設(shè)計決策的時候會心中有數(shù),也就是無招勝有招。

從函數(shù)的這些準(zhǔn)則以及作者不成文的理由中看出編寫的原則只有一個:便于閱讀與理解

比如如果一個警察需要去了解一個嫌疑人一天內(nèi)做了什么,可能是需要嫌疑人先做個簡短的描敘:

早上去吃早飯,然后剪頭,去上網(wǎng),吃午飯...

然后如果對感興趣的事情詳細(xì)了解。

嫌疑人的一天就是一個函數(shù),吃早飯、剪頭、上網(wǎng)、吃午飯等等就很短小,而不是一開始就把所有的細(xì)節(jié)全盤說出。

如果嫌疑人在吃早飯的過程中去一趟銀行,這個信息對警察比較有用,但是隱含在了吃早飯中,這就類似于一個函數(shù)做了多件事,并不是不可以,但是很難用一個簡短的詞語進(jìn)行概括(函數(shù)名),也就給閱讀者帶來了困難。

等等其它的準(zhǔn)則都是基于這個原則來進(jìn)行,因此在自己設(shè)計函數(shù)時,可以參考既有的設(shè)計準(zhǔn)則,也可以自創(chuàng)一些其它的方式以及對現(xiàn)有的準(zhǔn)則進(jìn)行改良,只有便于閱讀即可。

附上部分常用準(zhǔn)則:

1. 只做一件事

2. 同一抽象層

3. 無副作用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1, 很欣賞 “}” 后, 備注 "{" 前 代碼。 就是 :// 干了些什么 ? ? 2, 一定要 高仿 ...
    plantAtree_dAp閱讀 183評論 1 0
  • 你要做一個不動聲色的大人了 不準(zhǔn)情緒化 不準(zhǔn)偷偷想念 不準(zhǔn)回頭看 去過自己另外的生活 你要聽話 不是所有的魚都...
    AAA楊楊楊楊閱讀 363評論 0 0
  • 做什么樣的事對公司有價值,怎么做,是你自己要思考的問題,也是你自己的工作。
    johnwang49閱讀 128評論 0 0

友情鏈接更多精彩內(nèi)容