函式程式設計的十個小技巧

2021-09-28 17:43:29 字數 1110 閱讀 2589

functional calisthenics是一套類似object calisthenics物件導向健美操的實踐模式,這些規則能夠讓你函式程式設計得更好,這些嚴格的約束能夠讓你以不同角度來思考如何編寫**。

1. ***只發生在頂層我們希望我們的**都是純函式的,這是為了避免依賴任何不純的因素,也就是說,如果必須有不純的函式,那麼請將這些不純的函式放置於頂層,然後盡可能與其餘**隔離,這些不純的功能包括:

2. 沒有可變狀態這實際上很接近上面一條,如果我們去除函式中可變狀態,我們就能建立純函式,去除可變狀態的方法有:不要重用變數,雖然這樣對待**可讀性有負面影響,但是任何可變狀態(變數)會導致意想不到的結果。

3.表示式(expression)不是語句(statement)這也是無可變狀態的衍生,如果我們的函式不返回任何東西,那麼這個函式內部可能存在可變狀態,那麼這個函式就是不純的,我們要實現純函式,就要讓這個函式返回值。比如,sql的insert/update語句statement是向資料庫插入資料,沒有任何返回結果,這種語句明顯是改變了資料庫資料表的資料,是不純的,不是函式程式設計倡導的純函式。

4.函式只能有乙個引數這是可能引起很多質疑的,但是如果乙個函式有很多引數,這會和單一職責原則違背,currying柯里化提供了一種將長引數降低為一系列只有乙個引數函式的辦法。

5.不要有顯式的遞迴將遞迴和你需要執行的邏輯分離隱藏起來。(類似foreach這種最好使用函式程式語言提供的monad等方式實現)

6.抽象的最大層次函式應該盡可能採取抽象的最高層次,比如,如果list是enumerble的特殊情況,那麼函式就應該採取enumerble。

7.使用無限序列如果你你的函式使用或返回一系列資料,那麼寫這個函式的方式不要排除無限序列,而是允許tail尾遞迴。

8. no if盡可能避免使用if語句,正如samir所說:

9.為一切取名我們應當為比如tuple元組這樣的原始型別取名,我們應該避免匿名函式和lambda。

10.使用中間變數避免鏈條化函式呼叫,提取到中間變數。

11.不要縮寫如果我們看到乙個函式名為f(),我們會進入黑暗時代,我們可以使用更具描述性的名稱來幫助別人來了解**的意圖。

upyun.com是國內領先的雲服務提供商,專注於提供靜態檔案的雲儲存、雲處理和cdn加速服務。現在註冊,即可免費體驗!

十個Linux bash小技巧

如果你曾經在 linux shell 命令列提示符下輸入過命令,你可能已經使用了 bash 畢竟,它是多數現代的 gnu linux 版本的預設命令列 shell bash shell 是進入linux 作業系統的 首個介面。它接受,解釋並執行你的命令,並且向你提供 shell 指令碼和自動任務執行...

提高監控策略的十個小技巧

原文 10 tips for an effective monitoring strategy 翻譯 diwei 這是我三篇 文章中的第二篇,在這幾篇文章中我會對o reilly media中devops for media entertainment這篇文章提到的一些觀點進行擴充套件。第一篇文章介...

Unity 開發的十個實用小技巧

unity 開發的十個實用小技巧 unity tips 4 當你在旋轉乙個物件時,按住ctrl cmd他會鎖定角度,同樣的方法也適用在移動物件時,要修改鎖定的預設值可以到edit snapsettings修改。unity tips 5 還有另外乙個對齊鎖定技巧,當移動物件的時候按住v可以啟用節點鎖定...