寫 Class 有什麼問題?
現在的前端非常不流行寫 class 這樣的語法糖,但實際上 class 就是 function 的進階應用而已。過往盛行的物件導向程式設計大家想導入到 JavaScript 使用,但各種水土不服問題不斷誕生。另一個原因就是物件導向的設計模式其實要學習更多的語法,躲避更多的坑,成了一個大問題。
以我最熟悉的兩個框架,Vue 和 React,從過去 class 滿天飛的時代到現在也算有天翻地覆的改變。後來 functional programming 的興起,漸漸的大家越來越朝向這個方向去撰寫。但 class 消失了嗎,其實不然,它只是往底層移動,比較不會出現在業務層。
如果就是想寫 class ,要注意什麼東西?
- 當 function 被解構,this 會消失。現在大家很習慣解構 property ,但在 class 很依賴 this 溝通,所以需要手動去處理 bind 這件事。
- 使用 this 修改狀態不會響應。因為它是內部執行修改,框架是不會進行響應的,要去通知外部框架狀態更新。
- 目前流行 functional programming ,在特定 API 的設計下,需要設計 immutable 的更新手法。
最後我想說,OOP 和 FP 絕對不是對立,它們之間的差異關鍵在理念,任何能讓程式更容易被閱讀被管理都是好方法。前端們也別看到 class 就排斥,其實融入在架構中或許也是一個好選擇。