iT邦幫忙

2022 iThome 鐵人賽

DAY 4
0

好吧,前面的文章打這麼多,那要怎麼知道你的程式碼到底是不是亂到不行。為了讓各位知道這點,我就拿出一部分還沒重構的程式碼給各位看看吧。

God Class

棋類遊戲裡,絕對不會缺少的元素—單位(Unit),各位在往下看之前可以先自己想想看這個畫面中,想是完整讓紅髮男孩動起來,會需要那些東西。
https://ithelp.ithome.com.tw/upload/images/20220918/201518943wvOEgyafY.png

紅髮男孩本身只看畫面的話會需要以下的功能

  • 點擊監測
  • 角色狀態變化(推、受傷、死亡、被選取狀態這些動畫)
  • 技能(紅髮男孩的推跟走路技能)
  • 角色基本數值(精力值、行動次數、Debuff)

除了這種視覺上比較可見的,還有一些比較隱藏的

  • 尋路演算法
  • 傷害防護計算
  • 碰撞判斷

既然如此,那這個單位本身長什麼樣子呢?
https://ithelp.ithome.com.tw/upload/images/20220918/20151894ZwbN3Cxr5w.png
看到旁邊破千行的數字,應該可以料想到…恩對,這個Unit真的幾乎把上面的內容全部都塞在一個class了Orz,這個範例在程式的世界裡就是典型的God Class範例。
每個人對於行數的標準不太一樣,我個人會希望一個Class的行數不要超過300行,超過的話功能的尋找就會變得越來越麻煩。我就會開始想辦法去思考這個Class有甚麼功能其實不應該被放在這裡而是要放在其他地方。

Inspector版面過於臃腫/排版不算好看

這個名叫Clency的script是上面紅髮男孩的數值介面,不過我個人是覺得這介面不太好看。
https://ithelp.ithome.com.tw/upload/images/20220914/20151894K6Gg0NW4cT.png

當然有人會覺得這還好,不過以我的標準來看,這版面至少Hit Points、Movement Points、Action Points、Max Stamina、之類的數值要在分一層單位資料才好。或者…創個簡易版本的編輯器編輯而不是直接在Inspector上面改動?

雖然還有不少地方蠻有問題的,但在列下去就進不了正題(X)有點懶得寫(O),不過既然這個Unit有這麼多問題的話,那要怎麼改才能讓它不要塞這麼多的功能在裡面?這就是下一篇鬆偶合架構要來說的事情了,敬請期待明天!

參考資料

Turn Based Strategy Framework
流離之歌


上一篇
Day 3:何謂Clean Code?
下一篇
Day 5:鬆耦合架構
系列文
如何在Unity裡寫出具有一定擴充性的遊戲30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言