私はいくつかのコードを継承し、その中に500行のswitchステートメントがあります。基本的に、タスクをオンにしてstring
、対応するアクションを実行します。
それ以来、各caseステートメントを新しいクラスの独自のメソッドに移動しました。巨大なswitchステートメントはまだ存在しますが、ロジックをインライン化する代わりに、各ケースはメソッドを呼び出すだけなので、非常に便利です。
問題は、メソッドが多くの異なるものを変更することです。メソッドの50%には0個の引数を渡す必要があります。一部の40%には5個の引数が必要で、残りの10%にはそれぞれ10個の引数が必要です。
現在これは機能しますが、もっと良くしたいと思います。switchステートメントを削除するか、何らかの方法で渡されるパラメーターの量を減らします。
sをsにDictionary
マップしてスイッチ全体を削除することを考えていましたが、多くのrefパラメーター(プリミティブ型)を使用していて、それらをに渡す方法がないため、これは機能しません。コンストラクターを作成し、後で参照的に変更してもらいます。string
Action
この問題の明らかな解決策は、16個程度の変数すべてを別のクラスに配置して渡すことですが、それらの多くはあまり関連していないため、ある問題を別の問題に置き換えるだけです(非凝集データを含む長いパラメーターリスト)。クラス)。
このコードを改善する他の方法があるかどうか疑問に思っていました。読んでくれてありがとう。