在正式開始寫程式前,先分享一個我覺得超好用的功能
這個也是在其他語言沒看過或沒做那麼好的功能
那就是RDD~~
REPL-Driven Development
什麼是repl呢? wiki的解釋是 read eval print loop
https://clojure.org/guides/repl/introduction
就是你邊讀邊執行看結果然後重複這個迴圈,最終程式就寫好了~
我個人認為要簡介的話就是Interpreter+TDD,以下先用範例描述並先簡述一下這個我愛不釋手的流程
今天收到了一個新的功能要求
流程大多應該都是寫程式、準備各種需要的前置、跑一下驗證剛剛寫的然後一路到程式完成
我自己試過幾種
TDD
測試的程式、目標的函數、setup/teardown
但遇到範圍較大就不太夠用
Interpreter
在python/node/...可以直接進入他的直譯器import module來測試我要寫的邏輯(我是用vscode的 runner)
但他的scope/module跑起來沒有那麼方便
GDB
在已有的專案下來協助debug開發
東西都在記憶體了,前置什麼都不用變
但他要寫比較多行的程式滿麻煩的,還有新邏輯也不能這樣寫
以前c#可以下中斷點然後開發、執行、修改,然後再把中斷點拉回前面重新執行,但不是每個專案都可以這樣子使用
以上幾點都讓我覺得沒有辦法一口氣完成功能,或是就專案單跑一個專案rebuild也要好久(只改幾行,這邊體感的久是3秒)
但REPL-Driven Development徹底解決這個問題!!
你可以在你的編輯器寫code,然後送到環境裡執行
而且這個環境是用有你全部的資料、你專案所需要的東西全部都在記憶體裡面,所以你可以直接呼叫
不管你是需要超複雜的設定的module
在啟動前要做什麼事情
...
你都只需要做一次,完全不用為了其他開發作額外設定(如果要用成mock之類的不算)
想像你要裝潢房間
不需要蓋地基建大樓隔房間、不需要建假空間、不需要在工廠做好再搬進去
你只需要看現在的長什麼樣,然後蓋地基、裝潢全部一起來
覺得神奇嗎?歡迎來到REPL-Driven Development的世界
P.S. 這個跟不衝突,不是說使用此開發就不用測試喔