函數式程式設計 | Clean Architecture 無瑕的程式碼:整潔的軟體設計與架構篇 閱讀筆記
06 Jul 2020本文為「Clean Architecture 無瑕的程式碼:整潔的軟體設計與架構篇」第 6 章「函數式程式設計」的閱讀筆記。
可變與不可變的變數
- 可變的變數(mutable variable):變數在程式執行的過程中,值是「會」被改變的。例如:迴圈中用於計次的 i。
- 不可變的變數(immutable variable):變數在程式執行的過程中,值是「不會」被改變的。函數式程式語言中的變數值在宣告時就已設定好,而不會被改變。
可變變數的影響
- 優點:節省大量資源,例如:儲存空間、處理器速度。
- 缺點:造成競爭危害(race condition)、死結(deadlock)、平行更新問題(concurrent update problem)。
反之,亦是不可變變數的缺點與優點。
折衷解法
將系統中的元件分為兩部份-一部份的元件是可變的,另一部份的元件是不可變的,並讓兩塊做通訊;其中,盡可能地將元件放在不可變的區域中。
事件來源
實踐不可變的方法
- 保存交易,而非計算結果。也就是說,當需要知道結果時,重新計算交易即可,這需要極快的處理器速度。
- 在空閒時間計算部份交易,並儲存結果,之後再總結部份結果即可得到最後結果,這需要大量的儲存空間。