一般我們會把資料庫邏輯寫在 repository,只要有邏輯,就需要去寫測試,畢竟我們寫的程式,可能跟我們想的不一樣。由於 repository 寫的是資料庫邏輯,所以勢必要真的去讀寫資料庫。但若真的去讀寫 MySQL,速度會比較慢,且資料庫本來就有一些資料,可能會影響測試的結果,因此比較理想的方式是測試時改讀寫 SQLite In-Memory Database。
點燈坊
將if else
轉成switch case
雖然不算重構,但轉成switch case
之後,程式可讀性較高,且通常可以讓人聯想到下一步重構技巧,如Replace Type with State/Strategy,在PhpStorm 2016.1版中,新增了此項重構,非常實用。
Laravel 雖然為後端 framework,但提供了 Laravel Elixir 整合了很多好用前端工具,其基於 3 個更基本的前端工具 : Node.js、NPM 與 Gulp,這三個必須先搞定後,才能享受 Laravel Elixir 所帶來的便利。
傳統上都是在系統只安裝一個 Homestead,然後每個專案設定不同站台,各專案共用同一個資料庫。這種方式大體上也沒什麼問題,但有時若想測試一些東西,如安裝 Facebook 的 XHProf + XHGUI,將這些測試用的東西安裝在開發用的 Homestead 似乎不妥,因此最理想的方式是每個專案有自己的 Homestead,各專案可以安裝自己所需的元件,而不影響其他專案。
初學者因為Laravel環境難安裝而卡很久嗎?Laravel官方已經幫我們將整個環境用VM打包好,讓初學者可以不用擔心如何在OS X安裝PHP、Composer、Nginx、MySQL,就可快速地享受Laravel所帶來的便利。
PHP雖然有了Laravel,但實務上還是常常會使用PHP原生函式。假如是Laravel,因為函式都封裝在class內,因此很容易使用Mockery將某個class的method加以mock,但若使用的是PHP原生函式,因為並不是包在class內,所以無從mock,實務上我們該如何測試PHP原生函式呢?
初學者使用PhpStorm開啟Laravel專案時,馬上會發現原來的程式碼出現一堆反白警告,事實上這些都是有意義的,只是初學者常常不知道怎麼處理,而忽略這些反白警告,除此之外,PhpStorm有強大的語法提示功能,讓你不用去死記物件有哪些field與method,只要用選的即可,可大幅增加開發效率,也不用擔心typo打錯。而PhpStorm威力的背後,就是基於PHPDoc。
若我們直接對參數做修改,會使得將來的Extract Method難度更高,因此在執行Extract Method之前,我們常常會執行Move Assignment to Parameters,先將參數指定給暫存變數,然後將後續的程式全部改成修改此暫存變數。
傳統我們會使用 if else
判斷,建立不同的物件,但由於 JavaScript 與 PHP 動態語言的特性,我們可以將要建立的物件的 class 名稱以變數表示,直接以該變數建立物件。
傳統我們會使用 if else
判斷,執行不同的 method,但由於 JavaScript 與 PHP 動態語言的特性,我們可以將要執行的 method 名稱以變數表示,直接以該變數執行 method。