關於後端的 Helper

鳩山與福澤在白板面前,討論對網路框架的感想。
福澤看似若有所思,接著問鳩山說:「你知道後端 helper 嗎?」
鳩山遲了幾秒,決定問福澤:「我不太清楚你對 helper 的定義,是有什麼意思嗎?」
「好吧,」福澤拿起白板上的白板筆,開始在白板寫起程式碼:

form_helper({ action:"qwerty" , class:"foobar"}) |f|
    f.text a.bc
    f.number a.cx
    f.submit({value:"Submit"})
end

「你猜這東西最後會變成什麼嗎?」筆一甫落,福澤就問鳩山這個問題。
鳩山看了這個有點抽象、甚至有點不太熟悉的程式碼,決定放棄:「嗯,我有點不清楚。請問它最後會變成什麼樣子?」
「好的。」福澤又拿起白板筆,在題目旁邊寫了答案:

<form action="qwerty" class="foobar">
    <input type="text" name="a[bc]">
    <input type="number" name="a[cx]">
    <input type="submit" value="Submit">
</form>

寫 Java 的鳩山看了就發現:「噢...噢...我知道了。原來是這樣子。」

「這是一種類似 rails 的虛擬碼。不過許多網路框架也有這種東西。」福澤開了 CodeIgniterExpress 的程式碼網站。

「事實上,」福澤繼續說:「Laravel 也有這種東西。我們讀了一點文件,也有一點程式基礎,所以能知道這些後端 Helper 可以幹什麼,接著就可以為此少寫很多東西。」
「你說得沒錯。」鳩山點頭。
「不過呢,」福澤話鋒一轉:「不是所有人都知道那是什麼東西,無論那個人是前端或後端。要維護還有劃清責任的話,可能會有問題。」

室內靜默了幾秒,因為福澤說他口渴,需要喝點茶,順便醞釀氣氛。

福澤喝完點茶後,開始總結:「基於我前端出身,我其實不太喜歡這種完全不像 HTML 的東西。如果要我發表意見,我其實不贊同使用。」
鳩山遲了幾秒,也發表看法:「這方面我也同意,這種東西可能會很難把責任分清楚。我寧願用 JSON API 傳資料、或是後端處理前端傳過來的請求。」
福澤摸了摸下巴說:「既然我們有所共識,那我們就不用內建的後端 Helper 吧。」

做出結論後,兩個人就回到位子上了。