- 參考資料:
https://github.com/Lidemy/mentor-program-4th/blob/master/examples/common.md
什麼是好的 code?
- 符合命名慣例以及命名一致性
- 合理的變數名稱
三種常見的命名慣例
駝峰式命名(Camel case)
- 就像駝峰會一高一低
- 單字之間不空格,而是直接連起來,但是連起來的第一個字要大寫
- 例如:有一個 handle add post 的 function,就會叫做 handleAddPost
駝峰又有分兩種:
- 小駝峰(lower camel case):開頭是小寫,就像上面的範例 handleAddPost
- 大駝峰(upper camel case):又被稱為 Pascal Case。開頭變成大寫,也就會變成 HandleAddPost
蛇型命名(Snake case)
- 蛇就是底線的意思,利用底線來連接單字,然後全部都是小寫
- 同上述範例,會變成:handle_add_post
烤肉串命名(Kebab case)
- Kebab 是烤肉串的意思,
-
符號看起來就像那跟棍子 - 同上述範例,會變成:handle-add-post
認識這三種常見的命名慣例以及名詞之後,接著要來熟悉不同地方的命名慣例。也就是說,不同程式語言或是不同環境,使用的命名慣例也可能會不一樣。
需注意的是,命名慣例雖然沒有強制性,但開發時基本上都會依照這套慣例,避免寫出他人認為不好的 code。
JavaScript
在 JavaScript 中,不管是 function 或變數,習慣使用 lower camel case,也就是 handleAddPost
。
在特殊情況下,可以使用大寫駝峰式,例如:
- XMLHttpRequest
- Number
- Set
這些變數可以算是物件導向中的 class,因此習慣以大寫開頭。而 React 中的 也同樣會使用大寫開頭方式命名。
常數
- 常數具有不變的特性,通常以 snake case + 全大寫來命名
- 例如:圓周率 PI,就會是
Math.PI
;或是 client id 會寫成 CLIENT_ID
資料庫 table 與欄位
- 資料庫以 snake case 命名為主
- table 名稱的慣例是複數,所以使用者資料會叫做 users
- 欄位名稱同樣是 snake case,以建立時間為例:created_at
Url
snake case 或 kebab case 這兩種慣例都蠻常見的,可能會長這樣:
- handle_add_post
- handle-add-post
變數命名
- 大原則:不確定縮寫或簡稱時,就乖乖寫好寫滿
- 例如:event handler 傳進來的參數 event,常見的簡寫就是 evt 或是 e
- function 通常搭配動詞開頭,get 和 set 就是常見動詞。例如 getGames 或是 getStreams,setName 或是 setTitle
程式碼排版
例如統一空兩格,可透過調整編輯器設定,上傳到 GitHub 後要確認過沒有跑版問題。
資訊安全
- 程式碼都是公開的:後台管理界面一定要做驗證,才能進行權限管理
- 不要存著僥倖心態:永遠都預設把你要輸出的東西做編碼(例如:跳脫)以後才輸出,而不是直接輸出,就可以避免掉很多的 XSS 攻擊。
前端檢查 vs 後端檢查
前端做資料檢查,只是為了增進使用者體驗,後端做資料檢查才是真的檢查。