前言 - Rails 開發實踐
2021 年底,我開始思考什麼是「開心地寫程式」這件事情,如果單純是興趣也不跟其他人合作,那麼是很容易的。然而,如果想要將寫程式作為工作,就一定會面臨到跟其他人協力的問題,很多時候會是我們抱怨「寫這段程式的人在想什麼」的原因。
也就是說,如果能讓眾多的初階開發者(Junior Developer)寫出更好的程式,那麼對所有人來說都能夠更加專注在享受寫程式的過程。
2021 年底,我開始思考什麼是「開心地寫程式」這件事情,如果單純是興趣也不跟其他人合作,那麼是很容易的。然而,如果想要將寫程式作為工作,就一定會面臨到跟其他人協力的問題,很多時候會是我們抱怨「寫這段程式的人在想什麼」的原因。
也就是說,如果能讓眾多的初階開發者(Junior Developer)寫出更好的程式,那麼對所有人來說都能夠更加專注在享受寫程式的過程。
端午節連假利用空檔轉換心情時,把去年重寫後沒有完成的玩具再次拿出來挑戰,剛好在處理一對多的關聯時發現 Domain-Driven Design(領域驅動設計) 中對於 Aggregate(聚合)要作為統一操作其關聯的 Entity(實體)的原因。
最近在工作中對專案套用 google/wire 來處理依賴注入(DI,Dependency Injection)時,發現有非常多小細節需要注意。大多數語言其實都會碰到這類問題,然而 wire
的設計沒有採用大多數框架會提供的控制反轉(IoC,Inverse of Control)機制來處理,反而讓很多過去沒有考慮的狀況浮現出來。
過去一年花了不少心力在學習調整心理狀態,也慢慢的能夠理解「活在當下」的概念想要傳達什麼,同樣的概念也讓我想到了學習敏捷開發中的一些技巧,意外的能讓在寫程式的過程中更順利。
經過接近半年的連載,最後我們要來聊一下如何「加入測試」的問題,雖然我們了解到了各種撰寫測試的技巧,但往往我們是卡在不知道從何開始測試,因此跟大家分享一些實用的小技巧。
這幾年因為疫情的關係,大家都有不少生活上的改變,也因此我有四年沒有辦法親自到日本參加 RubyKaigi 這個對 Ruby 工程師來說最盛大的研討會。
終於在今年,我到日本重新感受了一次 Ruby 社群的活力。
雖然我們沒有使用依賴注入的技巧,或者實作中有耦合的問題存在,在 Ruby 中因為語言特性的關係,我們還是有非常多方式可以進行測試,然而這也會讓我們的測試變得複雜。
在這系列的文章中,我們已經對使用 RSpec 進行測試的技巧有一定的理解,接下來我們來討論一下「可測試性」這件事情。
最近在準備明年(2024)的連載主題,在實作的時候意外發現自己逐漸習慣「不使用瀏覽器」的狀況下去進行開發,除了比較常用的後端情境之外,連前端也很順利的可以實踐這件事情。
在撰寫 RSpec 的過程中,我們大多會使用 expect
(預期)搭配 receive
(接收)來驗證某個方法有被呼叫,然而這會讓我們需要將「預期」寫在實際的行為之前,在驗證的邏輯上似乎有點奇怪,因此我們可以用 Spy 功能替代,在呼叫實際的方法後再去驗證行為。