給,所有的所謂的『新手』(可能是單純的嘮叨)


#1

所有的程式都是 [input(輸入) => process(處理) => output(輸出)] 假設這樣的程式為 (p)
如果你遇到難題,請你放下你的電腦,閉眼120秒,拿你紙筆,如果你能力可及,怎樣完成 (p) 的串連和動作?
前提是你必須拋棄掉 Rails 的 scaffold,因為那正是害慘你的東西 …

然而真正實作時我的思路和你的思路有何分別?簡單的來說:『我是不管技術的,或是我會什麼?』
而是東西應該是要長怎樣,而我如何把它完成,對我而言這世界沒有 scaffold,沒有 CURD,那是給小朋友
玩的東西,你才是這個系統的主宰,長成你想要的樣子,或是客戶想要的樣子,技術債先放一旁,要補要問另外再說

所以我會用剛剛我的說法,把流程一個一個包裝好

{{新增頁面}} => params => action(處理分流) => model(儲存) => {{檢查 DB 是否正確不管下一頁}}
然而
{{假設 DB 正確了}} => {{該如何顯示成想要的樣子}}

CURD 或所謂的 restful 都是行為的規則與導向,但一直都可以切開,只新增無輸出或只編輯和刪除

所以上面的{{新增頁面}}只需檢查到『儲存成想要的樣子』即可,在這邊思維先斷開
再來把『已經儲存成想要的樣子』的東西顯示成『想出現的樣子』
刪除則是『選擇對的東西,然後刪掉』,而編輯只是新增的另外一種行為罷了,也就是挑選與覆蓋

所以 linux 下沒有人用rename ( 重新命名 )的指令,而都是mv ( 移動 ),就完成了更名與覆蓋與位移三個動作
也都是同一種意思

不管如何,如果你真的沒想法,蓋上你的電腦,盯著電腦通常是無解的,拿出紙筆畫出你要的流程圖,畫面
,資料流(一個蘿蔔一個坑),schema格式,還有如何選擇資料來顯示(把蘿蔔從坑拿出來),之後才是付諸實行

而拋棄掉 form_for 改用 form_tag , f.text_field 改成 text_field_tag
包裝自己的 params 然後流程全部自己做,這樣你才會得到自己的自由度和空間,然後試著回想為何 PHP / ASP / JSP
在沒有 framework 全打 HTML 的舊石器時代,也能做出很強的產品?我想單純的他們不知道他們不會飛罷了

而你呢?如果別人只教你飛,看似飛得很好,但最後只飛直線還不會落地和起降,這不是很有趣嗎?

不管如何,從頭學習唄,手刻一個 HTML 到送出一個 form 變成 params,或是用 GET 拼網址
這在我高中時期的『烘培雞魔法書』,裡面就有寫了,這個才是所有的最基本,而不是 Rails 不是嗎?

所以下次請你把大致的東西都刻好,也就是"我就是要這樣做",且"我把東西都準備好了",但"我缺了一些技術不知道該如何實現"
然後我們再討論如何實現的問題唄?給我看流程圖和你要的 view,全打 HTML 都沒關係,我教你如何包裝成Rails
能吃和能支援的方式,否則我們在浪費雙方時間,而你是否也在和學習過程中一樣,期待或等待一個好的解法?
而不是自己做出想要的系統,取得自己能往上爬往上跨越的喜悅?

你缺的技術債的部分對我而言是:『江湖一點訣,說破不值錢』,單純有人把他拿去賣,而我選擇公開和接受別人挑戰罷了
Rails 能收最多錢的部分就是用 scaffold + gem 打造出一票東西,但新手要跨越新手之牆最重要的就是
如何不用 scaffold + gem,拋棄掉 route / controller / view / helper … 全部拆光光
然後才拿回來用,打造出『自己想要的東西』,所以我們公司新人面試,如果新人只會說他會用啥 gem
而無法說出他為何挑選和使用,還有在怎樣的情況要使用,且自己是否能完成一樣的東西時 … 大概就先刷掉了
而和很多人教新手的:『你用這個 gem 就可以完成些什麼東西呦』然後其餘不解釋,完全不一樣,有趣吧?

不管如何從頭來吧?從 HTML 開始寫起,套上一些 Rails 的語法,類似 form_tag 要送到哪去,然後 controller
接到後,要從 params 開始做如何的處理?儲存成自己想要的資料格式,醜也沒關係,action name 全都自己寫
Params 用一票 if 來判斷,post / get / 網址全部自己定義,不要過早最佳化
走出這些,你才能跨越別人餵給你的毒糖果,也就是所謂的語法糖,擁有自由的做出所有你想要的東西出來…

anyway 先這樣,你應該完成些東西再來問我才是,以上


當你經手一個project時候,要怎麼快速了解架構?