🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付

近幾年跟不同團隊合作,我發現大家似乎都不再使用 global functions 了。

前人的經驗告訴我們,濫用 global functions 會讓程式碼變得很難維護。

大家有改過 wordpress 的 source code 嗎?

滿滿的 global functions。非常難維護,但是功能強大。

其實,只要稍微注意一些原則,適當的使用,還是非常好用的。

以 Laravel 為例,內建有提供一堆好用的 global functions

https://laravel.com/docs/5.8/helpers

在講求開發速度的現代,這種寫了就用的簡單函式,當然也可以自己多寫幾個。

我在使用 Laravel 開發的時候,所有專案都會在 composer.json 加上這段

"autoload": {
    ...
    "files": [
        "app/helpers.php"
    ]
},

然後在 helpers.php 裡面就可以快速寫點輔助函式

<?php

// NOTE @howtomakeaturn: if you just want to find a place to write
// some functions quickly, this is the place!
// you can always refactor them later!

function testFunction1()
{
    return 'test 1';
}

function testFunction2()
{
    return 'test 2';
}

在兩種情況下,這個檔案特別好用

1. utility function 輔助函式

字串處理、陣列處理,之類的,目的單純、會常常用到的函式,放這裡非常適合。

或者你就想放一些 global shared 的 value,但是懶得使用 framework 的 config 機制時,放這也很適合。

2. 沒時間做好 abstraction 抽象化,但又想找地方放、才有重用性

有些邏輯,一時想不清楚該放到哪個類別、使用什麼 design pattern。

這種時候,隨便寫個 function 就是了。之後要重構也很方便。

不要小看這種寫法,在古早時代,整個系統都是這樣寫的。稍微寫一些也無妨。

那麼有什麼注意事項呢?

不要有 state,不要有 side-effect

讓函式單純一點,每次傳同樣 input 都會得到同樣 output。

除此之外,不要有 side-effect。也就是 function 內不要去更新到 function 外部的 state。

讓 call 這些 function 成為一件單純的事情。

結語

如果不太確定哪些邏輯適合寫成 global functions,參考 laravel 的 helpers 就對了。

適當的寫點 function 來幫助建構你的系統,還是非常好用的,沒必要完全不寫。


每週二 YT 直播問答,DC 可 Call-in,一起討論技術、職涯發展。
YT 👇👇👇
https://www.youtube.com/@codelove_tw
DC 👇👇👇
https://discord.gg/fvCF2whZ9D

提供 Shopify 接案服務:阿川の電商水電行 - 專修 Shopify 網店 👇👇👇
https://job.turn.tw/shopify-services

管理台灣 Shopify 開發者 LINE 群組(非官方)👇👇👇
https://line.me/ti/g2/YUasX5K3CJ4QdIx76zppjHlh3-q8w-xkSyK1LA

共有 0 則留言


每週二 YT 直播問答,DC 可 Call-in,一起討論技術、職涯發展。
YT 👇👇👇
https://www.youtube.com/@codelove_tw
DC 👇👇👇
https://discord.gg/fvCF2whZ9D

提供 Shopify 接案服務:阿川の電商水電行 - 專修 Shopify 網店 👇👇👇
https://job.turn.tw/shopify-services

管理台灣 Shopify 開發者 LINE 群組(非官方)👇👇👇
https://line.me/ti/g2/YUasX5K3CJ4QdIx76zppjHlh3-q8w-xkSyK1LA
🏆 本月排行榜
🥇
站長阿川
📝22   💬9   ❤️4
707
🥈
我愛JS
📝4   💬13   ❤️7
254
🥉
御魂
💬1  
3
#5
2
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付