iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 15
1
Mobile Development

如何用 Laravel 撰寫難以維護的專案系列 第 15

[Day 15] 聊難以維護商業邏輯的最後一天!

下面我們來聊聊,如何以其他的方式,來組合出難以維護的商業邏輯。

全域邏輯

啊,我們的老朋友全域變數,可以說是寫難以維護程式碼的重要武器!

雖然現在的 Laravel 框架不容易使用全域變數,但是我們可以參考 Laravel helper 的做法,撰寫全域函式:

/* 參考 laravel e() */
if (! function_exists('f')) {
    function f($value)
    {
        // 有的沒的
    }
}

維護這段的工程一定會大受感動,甚至可能痛哭流涕。

靜態變數的宣告

靜態變數,是僅次於全域變數的重要武器。

因為許多人都知道全域變數是不好的東西,所以在看到全域變數時,就會提高警覺。

相對的,靜態變數確實有適合的使用場合,也並不是所有 Laravel 開發者都會用 $this->app->singleton() 的方式處理,所以靜態變數的應用場景可以說是更多的。

儘量的將你的功能以靜態變數的方式實作,如果有人提出問題,可以回答他靜態變數的效能比較好。

用 command 組合商業邏輯

Laravel 的 command 可以用來撰寫一些適合 console 命令的邏輯。

比方,像是官方範例的

<?php

namespace App\Console\Commands;

class SendEmails extends Command
{
    protected $signature = 'email:send {user}';

    protected $description = 'Send drip e-mails to a user';

    public function handle(DripEmailer $drip)
    {
        $drip->send(User::find($this->argument('user')));
    }
}

就很適合:你可以程式裡呼叫該指令寄信,也可以排程裡呼叫該指令寄信。

不過,如果我們把商業邏輯拆散,放到不同的指令來實作。光想到要維護一段商業邏輯,之後的工程師得要盤點十幾個指令,才大概知道可能要改哪裡,光是想像就很有趣呢!

小結

如何寫出難以維護的商業邏輯,實在是門太深的學問。不過我們還是得在今天做個小總結,以免遺漏我們後面必須討論的議題。

希望各位有收穫,我們明天見!


上一篇
[Day 14] 再看看商業邏輯!如何設置難以維護的共用程式碼
下一篇
[Day 16] 又開始聊測試?如何撰寫難以維護的測試
系列文
如何用 Laravel 撰寫難以維護的專案30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言