glest學習筆記2 重構

2021-04-18 14:12:59 字數 2368 閱讀 9093

目前重構過程工作目錄:

0.00-original

0.00(2)-original.fps

0.02-move.render.renderunits.to.world.renderunits

0.04-harvest

0.06-firstattackcommand

0.08-2ccrepair.hascommontype

0.08-最後乙個caommandtypes.但改了之後會crash.所以未改

0.10-computefirstctofclass

0.12-替換全部的commandtype**ap

0.14-替換airulebuildonefarm中的test中的getcommandtype函式

0.16-替換gui中的getcommandtype函式

0.18-刪去了unittype中的commandtype

0.20-fps

0.22-修改commandtype和unitupdater的關係.***unitupdater的變數未初始化

0.24-修改commandtype和unitupdater的關係.通過全域性變數game修正bug

0.26-***unitupdater初始化放進unitupdater

0.28-unitupdater中的updateunit轉入world

0.30-重構parthfinder為singleton

圖2 unitupdater-commandtype

void ***commandtype::update()

進而,將***commandtype::update()上公升為commandtype::update()

void commandtype::update()

這樣就可以把commandtype中對unitupdater::update***()的呼叫統一起來。

commandtype和skilltype都是行為。但skilltype是baseic action;而commandtype是complex action, composed by skills。下面是類關係圖。

圖3 commandtype-skilltype

把parthfinder轉為為singleton。

發現singleton模式可以讓**寫得很優雅――免去了函式呼叫過程中傳遞parthfinder引數,僅僅將parthfinder標頭檔案包含進來就可以了。

在螢幕上顯示

fps,如果每一幀都顯示

fps=1/δt

時,會發現顯示的數字抖動很厲害,更本看不清是多少。

現在用「取均值」的方法解決了這個問題。顯示連續

5幀的平均的

圖4 fps:29.1

(圖左上角)

對rainparticlesystem

的改動,原因如下:

遊戲登陸畫面出現時,背景中雨滴從天而降,但最下面的雨滴形成了乙個明顯的面,看起來很不舒服。

5 背景中的雨滴形成了乙個「面」

rainparticlesystem

初始化時,將

partical的y

座標修改為區域隨機值。畫面有了較好的改善。

6 隨機化

y座標後的

rain

但rain

的效果沒有最初的好。乙個比較好的方法應該是,登陸時

rain partical

不是從time =0

時刻開始生成,比如說從

time

=10.0

開始生成。此時玩家登陸時看到的雨滴已經到達地面,不會在出現那個「面」了。

《重構》 2 重構原則 讀書筆記

1 重構不只是整理 而是一種更搞笑且受控的 整理技術。2 但必須對軟體 可受觀察之外部行為 只造成很小變化,或甚至不造成變化。與之形成對比的是 效能優化 和重構一樣,效能優化通常不會改變元件的行為,只會改變其內部結構。但是兩者出發點不同 效能優化往往使 較難理解,但為了得到所需的效能你不得不那麼做。...

讀書筆記 2 重構(Ruby)版

但你覺得需要注釋的時候,應該首先嘗試重構 這樣任何注釋都會變得多餘。自我測試 的價值,當你收到乙份bug報告時,首先編寫單元測試來暴露bug。編寫執行不完整的測試也比不執行的完整測試要好。思考可能會出錯的邊界條件,並集中測試它們。別忘了測試那些出錯時期望丟擲的異常。不要因為害怕測試不能捕捉所有的bu...

1253 重構2行矩陣

給你乙個 2 行 n 列的二進位制陣列 矩陣是乙個二進位制矩陣,這意味著矩陣中的每個元素不是 0 就是 1。第 0 行的元素之和為 upper。第 1 行的元素之和為 lower。第 i 列 從 0 開始編號 的元素之和為 colsum i colsum 是乙個長度為 n 的整數陣列。你需要利用 u...