這篇就來介紹工作後最常遇到的幾個小(?)問題吧。
強烈建議大家要養成寫 Log 的好習慣,這除了幫助你自己更好的 debug,也能幫助後面可能有需要查找發生問題點的人們。
當然,也能更好把鍋推給別人(不太對)
在寫 Log 的時候,除了記得要寫清楚發生的事件、時間、地點,更重要的是要分清楚 Log 的層級,這樣才能讓 Log 更有用。
一般來說, Log 的層級主要分為以下幾種:
更多層級詳情可以看這篇文章: Zam 大大的文章
此外,範例程式碼:
use App\Facades\Log;
Log::traceLog()->debug(’看你要記錄什麼內容’);
相信有些人跟我一樣不喜歡把東西丟到測試環境後才知道錯誤,畢竟測試環境的 Log 人人都可以看,一不小心就會被人發現你犯了低級錯誤(?)
所以我們可以在本地印出錯誤或過程,這樣我們就可以在本地就知道錯誤在哪裡了!
如果是用 PHP 的話,你可以使用 dd() 來印出變數,或是使用 var_dump() 來印出類型+內容。
這兩個最主要的差別是 dd() 會停止程式,而 var_dump() 不會。
此外,如果是用 Laravel 的話,你可以使用 dump 來印出 內容,不僅有顏色也更易讀。
PHPCS 全名為 PHP_CodeSniffer,這個工具可以設定 PHP 的排版規則,讓共同開發的大家 Coding Style 一致,不僅增加程式碼的可讀性,也可以避免一些不必要的錯誤。
PHPCS 包含了空格、換行、縮排、命名規則等等,可以透過設定檔來自訂規則,也可以使用別人已經設定好的規則。
在設定好規則後,可以透過指令來檢查程式碼是否符合規則,或是透過指令來修正不符合規則的程式碼,十分方便!
自動調整程式碼符合規則的指令: ./vendor/bin/phpcbf ./
這一項就相對重要一些,畢竟算是資安等級的事情。
以前在本地獨立開發的時候,我們常會將使用 api 的 key、 DB 連線的帳號密碼等等直接寫在程式碼裡面,這樣的確方便了開發,但是一旦上線之後,這些資料就會暴露在外,這樣的做法是非常不安全的。
因此,取而代之我們應該將這些資料儲存於設定檔中(例如 .env 檔中),並且在程式碼中引用這些設定檔內容,這樣就可以避免這些資料被外人看到。
除此之外,這樣的做法也有一個好處,就是當我們需要更改這些資料時,只需要更改設定檔中的內容,而不需要更改程式碼,這樣就可以避免因為更改資料而導致的錯誤。
跟前面一點類似,有些因為商務邏輯或是討論評估過後的數字,會在程式碼中出現多次,這時候就應該把這些數字定義成常數。
這樣可以讓程式碼更容易閱讀,也可以避免因為數字改變而需要修改多處的問題。
最重要的是,將這些數字額外建立 Enum 管理後可以額外花空間寫註解,不僅不影響原本的程式碼,也可以讓其他人更容易了解這些數字的意義。
靜態分析指的是在程式碼不運作的前提下,讓程式去判定 code 本身的格式錯誤、潛在安全性問題以及每個功能平均行數大小等等。
動態分析則是在程式碼運作的時候,去觀察程式碼的運作狀況,例如:記憶體使用量、CPU 使用量、程式碼執行時間等等。
每個套件或是每家公司的分析項目其實都略有不同,因此這邊就不一一贅述,主要是想提醒大家善用這些工具可以提高開發效率與品質。