讓你的程式更美好 – Service 概念

我自己的經驗呢!是把原生的PHP轉換成Laravel框架,那個時候最主要希望可以好維護,但是,把權限啦~商業邏輯啦~全部都會寫在Controller 最後你就會發現

Controller 越來越大

Controller 越來越大

Controller 越來越大

如果又不是前後端分離的方式拆開的話,Controller 會非常非常亂。

之前就開始想辦法前後端拆開,所以開始研究RESTful API 的設計方式

至少API都依照功能去放置對應的位置,

如果公司有前端的工程師就可以想怎麼改就怎麼改前端畫面,讀的到資料就好,也不會有重複撰寫相同性質的程式碼。

好了!Controller 很肥怎麼辦。這要怎麼辦呢?!

Service 模式

以下幾點都可以考慮的程式碼搬到 Service 檔案中

  • 牽扯到外部行為:如發送Email(Laravel有寫好的Mail實例可以使用),使用外部API..
  • 昨天有提到功能性的API用於確認折扣碼是否可以用的邏輯
  • 或是電商平台有購買數量不同有優惠運費折扣的商業邏輯

可以降低 Controller 程式碼的臃腫。

最主要的兩個原則外部服務商業邏輯,把他拆成 Service

明天開始依照這兩個原則把程式碼移出Controller吧!

題外話

還有人會把 Service 再拆開來! 還會有專門寫查詢資料庫邏輯的地方 Repository 模式,還有可以輔助 View 的部分 Presenter 模式,但可能小弟我碰到的系統還沒有到如此龐大的地步,感覺拆開來只是非常臃腫,檔案數量很大!

這是目前的看法,日後如果有更深一層的體悟!有機會再跟大家分享~

安裝VSCode 的PHPUnit測試套件

https://marketplace.visualstudio.com/items?itemName=recca0120.vscode-phpunit

這是台灣一位大大,Recca Tsai大大製作的套件!可以在VSCode 圖形化的介面執行測試

在VSCode套件搜尋框查詢 「phpunit」找到下方圖示顯示之套件並安裝

套件頁面

重新啟動 VSCode 可以在左側工具列看到像實驗室三角燒杯的圖式

套件畫面

點開來以後如右方紅色框框,Laravel 已經有預設的測試程式(這時候記得伺服器是要有運行的狀態喔!),點選上方的三角形開始鍵!發就會跑測試,測試通過就會像上圖一樣顯示綠色勾勾

明天先來撰寫 測試程式吧!


發佈留言