如何讓你的程式碼不變成屎山
小明是一名萌新php程式設計師,受雇在一家傳統的企業crm開發。
一天老闆提出一個新的需求
業務部的業務員下了一張訂單的時候,需要釘釘消息提醒物流部的同事去處理
小明收到需求,然後打開了下單的model程式碼如下
<?php
class Order {
public function create($params)
{
if (user == '業務員') {
//todo 查詢商品
//todo 計算價格
//todo 插入資料庫
......
}
}
}
然後小明很快就完成了老闆的需求
<?php
class Order {
public function create($params)
{
if (user == '業務員') {
//todo 查詢商品
//todo 計算價格
//todo 插入資料庫
......
//todo 發送釘釘消息給物流部同事
}
}
}
這一段程式碼就這樣,每次新增需求都不挺的網裡面加邏輯,最後變成了一堆屎山。完全部分能復用
現在我們來分析這段程式碼的問題
一. 違反了單一原則,再一個方法里做了n件事情
這個方法里做了幾件事情
- 許可權檢查
- 發送消息
- 插入資料庫
- …….
這樣做的壞處就是以後如果我要給運營許可權去添加訂單時候,這裡就需要添加if else 然後越來越多的if else 程式碼就更難維護了
二. 把許可權驗證放在model層
許可權驗證我們應該放在路由訪問前後或者控制器里,這樣當我們復用該程式碼時候就不用擔心許可權問題了
三. 把所有業務邏輯全放在model層
model層應該是一棟建築的地基,功能應該盡量簡單且一旦完成了就不輕易改動的,如果有新的需求我們應該新增方法,而不提倡修改原來的程式碼。這樣既不破壞原來的程式碼,也能更方便的拓展新功能。
以上是本人在寫程式碼過程中感悟,我僅一家之言,有不對的地方歡迎指正。