為什么函數式編程很重要:不一樣的白板圖
英文原文鏈接:Why Functional Matters: Your white board will never be the same
為什么我們要學習函數式編程?為獲得更好的軟件設計技術!
一天,我們設計了一個流程,來校對款項的收支平衡。下面這張圖就是我們在幾年前設計出的結果:
那以后我們開始學習函數式編程。函數式編程讓我們以數據流的方式思考過程處理:數據進來,做變換,過濾,計算,最終的結果就是輸出。不僅軟件是這樣工作的,每段代碼,每個函數,都模型化成數據輸入,數據輸出。中間沒有狀態的變換。
按這種方式思考問題使我們得到了這樣的流程圖:
把程序當成數據管道的思考方式使我們關注結果應該是什么,而不是每一步應該如何做。這種更高層次的思考問題的方式使得我們在系統設計階段避免陷入細節實現的泥潭中。
不管用什么語言寫成解決方案,這樣的方式思考能讓我們獲得下面的好處:
* 功能細化。(黃色的框代表JIRA任務)需求在圖上已經顯得非常明白:輸入什么,輸出什么。每項任務都能獨立的開發。
* 每個字節都可測試。涉及到數據庫的代碼已經放到了外面;不僅如此,每個方框都完全由輸入輸出來定義。對于測試來說這是一種最簡單的單元組件。
這樣一來,函數式的思考方式對敏捷編程(任務分解),TDD,和程序的可維護性都有好處。代碼變的模塊化。問題變得更容易分析,因為我們能夠知道每一步驟數據的樣子。
相互獨立,易于測試的組件:這就是函數式的。
新的編程技巧是有趣,但新的畫白板的技術卻是一件大事。
全站熱搜