老闆說程式碼寫得好就不會有 bug,你 bug 太多要扣你績效。
為什麼前輩寫的就沒有 bug?我哪裡寫不好?要怎樣才叫寫得好呢?
Code Quality Tool 跟跟前面介紹過的 debug 有些關聯。
程式品質好,bug 自然少。
PHP 是弱型別的腳本語言,因為沒有編譯階段,錯誤在執行時才產生。
但其實有些錯誤是可以在執行前就發現的,例如變數不存在(打錯字)、引用的路徑不存在、函式調用錯誤等等。
使用這些工具目的是透過程式碼的建議規範、預檢查,增進程式碼的品質,進而減少執行階段的錯誤。
[風格] 遵守建議規範
前面的文章提過 PSR,其中 PSR 1, 12 是寫作風格的規範。
團隊合作就像是合作編劇一樣,需要的是穩定的風格,確保團隊成員都能快速理解與接手修改,所以會希望大家能寫出一致的程式。
「我的程式碼一眼就看出來是我寫的,都不用 git blame 呢!」像這樣的個人特色在團隊裡並不會受到歡迎唷。
[靜態分析] 檢查 source code
檢查 source code 會檢查命名重複、宣告後未使用等等問題。
在 PHP 7 之後的版本也加入了加強型別宣告的功能,所以在較嚴格的檢查模式裡,我們也可以透過檢查參數型別、回傳型別來減少錯誤。
其實我原本用 VSCode 有安裝,有的要做一些設定,有的看起來好像功能重複,但我也不知道差別是什麼。
因為不想花太多時間在研究工具,後來就用 PHPStorm。
我的 VSCode 有裝的:
- phpstan: 靜態預檢查的工具
- 可以檢查出:call to method unknown、params type invalid
- 也可以提高檢查等級,例如要求要有函式必須宣告回傳型別,如果沒有就會拋出:type has no return typehint specified
- php_sniffer PSR & auto fix
- phpcs (PHP Code Sniffer): 檢查程式碼標準。
- phpcbf (PHP Code Beautifier and Fixer): 修正不符合標準的程式碼。
今年的 LaravelCof 剛好有一場這個主題的分享,想看更專業的分享一樣是建議付費買票囉 ^_^
https://laravelconf.tw/agendas?modal=agenda.WzJd