我最近開始做一些愛好遊戲編程。當我第一次開始時,我傾向於試圖設計抽象。即使我有一個特定的遊戲,我會問自己如何在多種遊戲和類型的遊戲中使用每個元素。我開始意識到,這實際上是帶來了一個具體的遊戲存在的不合。因此,我從頭開始寫代碼,以滿足我所想的遊戲(只有那個遊戲)的要求。我仍然創造了抽象,但只有當這個遊戲本身需要它時。我對這種做事方式很滿意。我覺得代碼只處於所討論的遊戲所需的正確抽象層次。過早抽象與YAGNI在多個類似項目中的對比
我的問題是,當有多個類似的項目時,這種方法如何適用?比方說,我已經創建了一個以太空爲主題的側面滾動遊戲。完成後,我決定製作一個以太空爲主題的twinstick射擊遊戲。這兩場比賽肯定會有共同點。根據以前編寫的代碼,最好的方法是什麼?我可以想到幾種可能性:
- 忽略舊的代碼。再次從頭開始。
- 允許我自己複製並粘貼一些舊代碼並修改它以適應當前遊戲和當前遊戲。
- 拿舊的代碼並將其推廣到它可以適應這兩種遊戲的程度。
想過這個之後,如果場景稍微改變了一下,它不是一款新遊戲。如果我決定我的橫滾比賽會有一些twinstick水平呢?看來在這種情況下,選項3將是一條路。這意味着選項3即使是新遊戲也是一種方式嗎?
再次略微改變場景,如果他們是兩個截然不同的遊戲,但我同時在兩個項目上工作?我不可避免地會開始看到抽象的相似性和機會。我是否應該抵制這種抽象,並保持代碼與每個遊戲截然不同?