iT邦幫忙

2021 iThome 鐵人賽

DAY 17
0
Modern Web

每天一篇文章系列 第 17

17. PHPer x Code Quality Tool

  • 分享至 

  • xImage
  •  

老闆說程式碼寫得好就不會有 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

ref


上一篇
16. PHPer x Composer x PSR
下一篇
18. PHPer x API document x Swagger API
系列文
每天一篇文章30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言