fnsne
5 years ago
[每日一噗]
今天工作繼續重構......
今天比較卡住的點是,IDE沒有支援inline function的功能......所以有點綁手綁腳的,有些比較大的重複就得要把一些東西給包起來之後,才看得到(因為沒辦法一個銀幕畫面看完),但又沒有辦法inline function......
latest #8
掰噗~
5 years ago
原來如此 (p-wink)
fnsne
5 years ago
最後決定先從幾乎不會錯,一定要重構的類型下手,例如多個高相關的數據,聚合成一個資料結構>
fnsne
5 years ago
這樣修改了一些掉之後,再把這些資料結構的賦值﹑產生的地方,抽成產生function,並且把這個function掛在應該負責這個項目的class下。這樣就少了不少code,勉強可以一個大銀幕看完整個function了
立即下載
fnsne
5 years ago
再來就是把一些看起來pattern有點重複的code,把他整理成一模一樣(藉由抽變數)。然後再抽成function,減少重複。(因為Goland沒有像IntelliJ那樣,會把類似的pattern一起抽起來,所以這邊就依靠測試,來確保把重複弄掉後,是否邏輯還是正確的。
fnsne
5 years ago
另一個有點卡住的點是,對於data object,不知道是不是因為今天有點腦弱,居然打算所有資料都用getter的方式來拿,明明可以不需要這麼做,即使這個data object下還有掛了一些method。
fnsne
5 years ago
寫一下我當時為什麼會想要都用getter的方式拿值的想法:

因為IDE有個Navigation叫 go to defination or Usages 可以在定義和調用的地方互相跳,當時我就想,假如直接使用
DataObject.Field
的方式取用的話,在從外面連到defination後,要再跳到設定值或有對值修改的地方,IDE會列出太多項,需要花比較多時間去看到底要移到那個。
假如有getter的話,在外部看到fieldGetter()後,想要看看內部怎麼做的,只需要做 跳到getter的定義 -> 移到那個field上再跳到那個field的定義,接著就可以show出這個field所有被使用的地方了
fnsne
5 years ago
但後來想想,其實我這個data object 只是個中間運算會產生的資料,並不是以他來輸出輸入的,他並不會有太多地方使用到他,有也通常會集中起來,那其實我並不需要設定getter來拿值。
fnsne
5 years ago
看著code越來越能表示他做了什麼,真的很有成就感。尤其測試還是可以passed還會加強信心。
back to top