我已經繼承了一些代碼,其中有一個500行的switch語句。基本上,它打開一個string
任務並執行相應的操作。如何重構這個巨大的switch語句?
我已經將每個案例陳述移到了他們自己的方法中。巨大的switch語句仍然存在,但不是內聯邏輯,而是每種情況都只是調用一種方法,所以它更簡潔。
問題是這些方法修改了很多不同的東西。 50%的方法需要傳入0個參數。大約40%需要5個參數,剩下的10%需要10個參數。
目前這個工程但我想把它做得更好。要麼擺脫switch語句,要麼以某種方式降低傳入參數的數量。
我想用Dictionary
該映射string
s到Action
s到消除整個交換機的,但因爲我使用了很多的ref參數(基本類型),這是行不通的,有會是沒有方式將這些傳遞給構造函數,並讓它們稍後被引用修改。
該問題的明顯解決方案是將所有16個左右的變量放置到一個單獨的類中並傳遞,但其中很多不是很相關,因此它只是用另一個問題替換一個問題(長參數列表與非內聚數據類)。
想知道是否有其他方法可以改善此代碼。謝謝閱讀。
你能用反射和界面做些什麼嗎? – jcolebrand
@jcolebrand:該應用程序對性能非常敏感,涉及移動機器。這部分程序是一個瓶頸,所以我想避免反思。不確定接口如何幫助。也許你可以詳細說明一下? –
如果沒有任何關於switch語句的作用以及它與代碼其餘部分的關係的情況,有點難以回答。交換機的條件和行動是否都是相關的,或者這只是一種應該完全消除的全方位場景? – pvanhouten