函式程式設計之道
大師和他的徒弟盤坐著進行圖靈冥想,沉思Lambda. 徒弟看著大師問:“老師,你能告訴我什麼是簡單嗎?程式設計是複雜的,框架通過去除選擇使得程式設計入手變得簡單,那麼類和框架哪個更好呢?”
大師看著徒弟問:“你讀過智者大師Carmack微博嗎?有時,優雅的實現只需要一個函式,不是一個方法,也不是一個類,不是一個框架,只是一個函式即可。”
“但是,老師”學生開始要發問,但是老師打斷它,問:“難道表示not functional(非函式性、非功能性)的詞語不是dysfunction(功能性障礙、不舉)的意思嗎?”
徒弟忽然明白了。
1. 不變性:真正的不變是變化,可變性隱藏了變化,隱藏了變化就會帶來混亂,智者會積極擁抱歷史。
如果你有一塊錢,我再給你一塊錢,這並不能改變之前你僅有一塊錢的情況,現在你有了兩塊錢,而可變性試圖抹掉歷史,但是歷史又不能真正被刪除,當過去事實無法追溯,它就如同鬼魂纏繞你,表現為程式中的Bug。
2.分離:邏輯是思想,效果是行動,智者總是在行動前思考,只有當思考完成後才行動。
如果你試圖同時執行動作和邏輯,你會製造副作用,它會引起你邏輯中的bug,保持函式最小化,一次只做一件事,做好它即可。
3.組合:自然的一切都是和諧的,一棵樹沒有水不能生長,一隻鳥而沒有空氣不能飛翔,智者總是通過配料把湯的味道做得更好。
為組合進行計劃,自然地將函式輸出作為其他函式的輸入,保持函式簽名儘可能簡單。
4.保護:時間是寶貴的,努力會花費時間,智者總是儘可能重用它們的工具,愚者子女故事為每次新情況創造特殊工具。
型別特定的函式不能被不同型別的資料重用,智者會讓函式處理許多資料型別,或者包裝起資料,讓其看上去和函式預期的一樣,列表List和其中條目item是最偉大的通用抽象。
5.流水不腐:死水無法飲用,食品丟在一邊會腐爛,智者總是讓事情流動起來。
基於時間的列表集合是一個流。共享物件和資料固定會使得函式彼此相互干擾,同一個資源的執行緒競爭能夠絆倒對方死鎖,只有當資料通過純函式自由地流動起來,程式才是有條理,可預期的。
6.智慧:智者邁出第一步之前首先找到路,智者是函式思維,而不智者會在叢林中迷失方向。
The Dao of Immutability — JavaScript Scene — Mediu
[該貼被banq於2015-04-10 14:14修改過]
相關文章
- 函式程式設計函式程式設計
- scala 函式程式設計函式程式設計
- JS程式碼簡潔之道--函式JS函式
- 【趣解程式設計】函式程式設計函式
- Windows 程式設計常用函式Windows程式設計函式
- PHP程式碼簡潔之道——函式部分PHP函式
- JS 命令式 宣告式 函式式 程式設計?JS函式程式設計
- 函數語言程式設計-鏈式程式設計RAC函數程式設計
- 不用任何賦值的程式設計稱為*函式式*程式設計賦值程式設計函式
- 揚帆起航:從指令式程式設計到函式響應式程式設計程式設計函式
- select函式socket程式設計函式程式設計
- 函式式思維和函數語言程式設計函式函數程式設計
- 13.程式程式設計進階:函式程式設計函式
- Scala函式與函數語言程式設計函式函數程式設計
- 邏輯程式設計與函式程式設計的介紹程式設計函式
- iOS鏈式程式設計及函數語言程式設計iOS程式設計函數
- python函式程式設計 返回函式 匿名函式 裝飾器 偏函式Python函式程式設計
- 程式設計思想之冪等性 | 程式設計之道程式設計
- 函式設計函式
- 瞭解 JavaScript 函數語言程式設計 - 宣告式函式JavaScript函數程式設計函式
- 程式設計師簡歷之道程式設計師
- 程式設計師修煉之道程式設計師
- 高效程式設計之道:好好休息程式設計
- 函式響應式程式設計與RxSwift函式程式設計Swift
- Linux系統程式設計(9)—— 程式之程式控制函式exec系列函式Linux程式設計函式
- Bash程式設計007——函式(一)程式設計函式
- Ardunio和HAL庫函式程式設計函式程式設計
- linux程式設計之pipe()函式Linux程式設計函式
- inux程式設計下signal()函式UX程式設計函式
- Linux Shell程式設計(29)——函式Linux程式設計函式
- 函數語言程式設計(一) 認識“程式設計正規化”和“函式”函數程式設計函式
- 函數語言程式設計(2) 高階函式函數程式設計函式
- Java程式設計師修煉之道—併發程式設計Java程式設計師
- 從李小龍的思想看程式設計師程式設計之道程式設計師
- Day 14 匿名函式 內建函式 物件導向程式設計函式物件程式設計
- Lambda表示式入門--函數語言程式設計與函式式介面函數程式設計函式
- [譯]函式式響應程式設計入門指南函式程式設計
- javascript函數語言程式設計: 優雅的使用underscore進行函式程式設計JavaScript函數程式設計函式