# [番外篇] 什麼是好的程式碼?
這個問題和前端似乎沒有太大的關聯,但對於工程師來說卻是相當重要的課題。我們在追求好的程式碼之前,都應該先想想看,什麼叫做好的程式碼。
但也不用把這個問題想得太刁鑽,或是覺得一定有什麼規則要遵守的,因為對於每個開發者來說或許都有不同的答案。
對我來說,好的程式碼或許可以用語言來類比:
- 可以清楚表達自己的意思。
- 有豐富的語法可以表達廣泛的情境。
- 不容易造成歧義
- 有簡單的規則可循
- 容易學習、被他人理解
恩,看起來似乎比較具體一點了,不過把每個敘述更加深入的話,又會發現更多可以探討的問題:
- 什麼叫做清楚表達自己的意思?
- 怎樣的程式碼容易造成歧義
- ...
而每個開發者對好的程式碼或許又有不同的認知,想要在團隊中建立共識又更加困難了。在早期有 JSLint,但隨著 JavaScript 生態圈的工具蓬勃發展,JSLint 已經不敷需求,後來逐漸衍伸出各種規範與工具,像是 eslint、prettier、stylelint 等等,以及之中著名的 Airbnb styleguide (opens new window),雖然不代表用這些工具就能保證程式碼一級棒從此不出錯,但可以從各大專案與團隊當中觀摩好的程式碼看起來是怎樣的。
但是儘管 eslint 可以幫你抓分行、長度、switch 要記得加上 default 等等,也不代表把這些事情做好就叫做好的程式碼對吧。
倒也不是要有個清楚明確的定義,隨著產品的迭代一定會有不適合的程式碼或架構,我們能做的就是多累積經驗。
那麼,挪用到前端的話,怎樣算是好的 UI 呢?
前面我們花了很多篇幅來介紹現代前端的手法與 UI 要考慮的事情,但把這些事情考慮進去後就變成好 UI 了嗎?顯然不是,像是 lazy loading、無限滾動等等的手法並不適用在每個場景當中,那麼怎樣才是比較好的 UI、程式碼呢?這個問題或許還沒有答案,就算在前端已經演化到用 React、Vue 等等的框架建構 UI,或許下一個 10 年就有更新穎且更好的架構出現。
← 前端安全性 [番外篇] 再談 Redux →