如何讓你的程式碼不變成屎山

小明是一名萌新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件事情

這個方法里做了幾件事情

  1. 許可權檢查
  2. 發送消息
  3. 插入資料庫
  4. …….

這樣做的壞處就是以後如果我要給運營許可權去添加訂單時候,這裡就需要添加if else 然後越來越多的if else 程式碼就更難維護了

二. 把許可權驗證放在model層

許可權驗證我們應該放在路由訪問前後或者控制器里,這樣當我們復用該程式碼時候就不用擔心許可權問題了

三. 把所有業務邏輯全放在model層

model層應該是一棟建築的地基,功能應該盡量簡單且一旦完成了就不輕易改動的,如果有新的需求我們應該新增方法,而不提倡修改原來的程式碼。這樣既不破壞原來的程式碼,也能更方便的拓展新功能。

以上是本人在寫程式碼過程中感悟,我僅一家之言,有不對的地方歡迎指正。