類別整理 我們花了二十幾天,從一行程式都沒有,甚至連規則都不太清楚的情況下,開始我們的 TDD ft. Slot 之旅。我們一開始什麼都不會,只會寫死 ret...
簡單工廠 現在我們的 Calculator 已經有 Slot 算分器基本要有的功能了。真要說的話,一個非功能需求我們還沒達成,也就是「容易創建」。 現在的...
視情況注入判斷規則 截至目前為止,我們判斷要不要從 Base Game 進入 Free Game 的規則都是固定的,我們進入 Free Game 之後要送幾場...
TDD ft. Recovery 在實踐 Recovery 時,按 TDD 的流程,我們要先給一個壞掉的測試。這裡既然我們已經決定要用 Memento 設計模...
Recovery Recovery 是 Slot 遊戲當中很重要的一個功能。Recovery 在做的事情就是,當玩家遊戲玩到一半,突然斷線或想要暫停的時候,可...
RTP 在做完前面這麼多功能與測試之後,今天我們要聊的主題叫做 RTP:Return to Player Percentage,它代表的是玩家每投入 $100...
New Game 今天我們來加一個新遊戲。何謂加一個新遊戲?就我們現在的架構來說,加一個新遊戲,就是設計兩個新的 GameFlow,一個給 Base Game...
抽象化 抽象化是所有重構技巧的根基。何謂抽象化?抽象化指的是一段程式碼不被當下的特殊狀態綁住,單純只看業務邏輯,抽象化也是一個把『不同』與『相同』分離出來的技...
存異求同 Base Game 與 Free Game 一開始時差很多,經過我們一番整理後,看起來長得很像,而事實上它們不只長得很像,它們其實本質上根本就在做同...
過猶不及 重構的過程中,「不知道目標」與「硬重構成不適合的目標」都是常見造成未來更高維護成本的情況。不知道目標比較常出現在只知道完成工作,從沒想過要做得更好的...
Checked Exception 與 Unchecked Exception 「例外處理不就是 try-catch 嗎?有什麼難的?」 會說這種話的人,肯定...
邊做邊重構 一直以來我們都是使用「邊做邊重構」的方式來進行開發,本集也不例外。這一集與其他集不同的是,我們要一口氣把 Free Game 的邏輯做完。 雖說是...
TDD(測試驅動開發 Test Driven Develop)是一種軟體開發方法,它要求在編寫任何程式碼之前,先撰寫測試案例。這樣可以確保程式碼的品質和可靠性,...
Free Game Free Game 顧名思義就是免費遊戲,是系統「送」你的。相對於 Free Game,我們到昨天為止玩的普通遊戲,就叫 Base Gam...
TDD 的「標準姿勢」 重構的過程中,我一定要用付費的 IDE 來做事嗎?我一定要把步驟切這麼小嗎?當我腦中就真的有一個非常清楚的樣貌,這時我可不可以不要 b...
More on CQS 我們試圖把命令與查詢從介面上分開,分開的原因是因為當狀態改變,其實會受到影響的狀態不只一個,會受到影響的查詢指令也不只一個。如果命令與...
CQS 在軟體設計中有一種思路叫「命令與查詢分離」(Command Query Separation),意思是指我們把所有操作都分成兩種:會改變狀態的命令,與...
回傳足夠且正確的資料給前端 原來我們前後端訂好的介面,只要回傳贏的分數(win)就好,但因為表現有需要,所以只回傳 win 是不夠的,還得加上新的盤面才行。我...
依賴反轉 為了達到「在不同場景替換不同 Random」的目的,我們必須讓每次的抽換,所付出的開發成本最小化。要達到這目標,有一個最關鍵檔在前面的阻礙:Java...
今日份 Ferris 在這部分最一開始提到很多我們在 Python 中熟悉的概念都能轉換到 Rust 中,前幾天建立的 GitHub Template 便是其中...
Random 今天的主題,會進入到一個 SLOT 非常非常關鍵的元素:Random。Random 為什麼重要?因為 SLOT 的基本就是要公平,要不可預測,否...
Design by Contract 除了單元測試,還有另一種方式,也可以在程式邏輯有誤時,幫你主動抓出來。這是一種設計風格:依合約設計(Design by...
再消基本型別偏執 基本型別是必要的存在,因為它儲存了系統的狀態。為什麼「基本型別偏執」會是一個壞味道?因為如果我們大量地直接操作基本型別,那麼閱讀者(也就是三...
長方法 長方法的問題顯而易見地就是閱讀困難。一句話超過兩行,我們就會認為文字不夠精煉而不易閱讀,一段 Code 也是,超過一定長度,就會超出大腦負荷,語意的表...
談測試之前,我們必須先知道,撰寫可修改的程式碼實踐依賴於三項不同的技能: 必須瞭解物件導向設計了解如何設計良好的對象和類結構是至關重要的。合理的設計可以最小...
Screen 原本的設計是把輪帶表直接 return 出去,這是因為我們在測試中注入給主程式的輪帶表只有 5 x 3 的大小。這顯然與事實不符,因為真實的 S...
試寫 在理想的情況下,TDD 的樣貌就是 Test -> Code -> Refactor 的無限循環。然而,對於天天面對 Production...
抽方法 抽方法是很常見的重構技巧,其好處有二: 把一個很長很雜亂的函式整理乾淨 抽出去的方法可以命名得更能暴露意圖 有些人會質疑,因為抽方法並不是重構的萬...
重構的時機 有的人會說,因為沒時間,所以無法重構。我認為並不是的。事實是你因為放著小問題不管,任憑系統不斷依現有的亂亂的樣子一直長大,等到你發現加東西很困難了...
輪帶表 輪帶表,也有人稱滾輪表,乃 Slot 遊戲中決定遊戲複雜度與好玩程度的關鍵元素。在 Slot 遊戲中,畫面上的滾輪,可以視為一個超長超大的滾輪的「截圖...