3. 你知道 Pure Function 帶來的好處嗎?
2023年12月27日
💎 加入 E+ 成長計畫 如果你喜歡我們的內容,歡迎加入 E+,獲得更多深入的軟體前後端內容
我們先比較以下兩段程式碼:
A.
def weekday():
return datetime.now().strftime("%A")
print(weekday())
B.
def weekday(date):
return date.strftime("%A")
print(weekday(datetime.now()))
上面兩段程式碼都會印出 "Monday" ,但是第二段程式碼明顯比第一段好,因為第二段程式碼的 weekday 函式更「純」,純函式 (Pure function) 有以下好處:
- 易於測試:相同的輸入總是得到相同的輸出,無需模擬或控制外部環境,以上例來說,無須設定外部時間。
- 減少副作用:不會改變任何狀態,意味著不會改到外面的 list、dictionary 等內部的值。
- 提高可讀性:因為他的獨立性,意味著可以被單獨理解。
- 支持併行和分布式運算: 因為沒有共享狀態和副作用,因此利於多線和分布式的環境。
什麼樣的函式叫做純函式?
- 給定相同的輸入總是有相同的輸出
- 沒有任何的副作用(Side effects) ,表示不會改變任何外部的狀態。