C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 109 を表示中)
■64625 / )  冗長コードの改善について
□投稿者/ れお (1回)-(2012/12/12(Wed) 11:01:25)

分類:[.NET 全般] 

お世話になります。
コードがどうも冗長なので何とかもう少しスマートな方法が無いかお尋ねします。

やっているのは、計算式を文字列で受け取り答えを返す処理です。

例えば
"5.5 + calc_1_1(#1)/2 + calc_2_1(#2)*0.1"

のような式を受け取るとまず calc_1_1(#1) の部分を実数にします。

式に登場する calc_1_1() calc_2_1()は 計算を処理する
Keisanクラスの中のメソッドで他にも以下のような種類があります。
名前には簡単な正規表現で記述できる程度の規則があります。

 calc_1_1(double[] val)
 calc_1_2(double[] val)
 calc_1_3(double[] val)
 calc_1_4(double[] val)
 calc_2_1(double[] val)
 calc_2_2(double[] val)
 calc_2_3(double[] val)
 calc_2_4(double[] val)


今は以下の様なコードなのですが

  Match match = Regex.Match(strSiki, "calc_[1-4]_[1-4]");
 
  if(match.Success)
  {
    if (String.Equals(match.Value, "calc_1_1"))
    {
        ans = Keisan.calc_1_1(v);
    }
    else if (String.Equals(match.Value, "calc_1_2"))
    {
        ans = Keisan.calc_1_2(v);
    }
    else if (String.Equals(match.Value, "calc_1_3"))
    {
        ans = Keisan.calc_1_3v);
         ・・・・
         ・・・・
         ・・・・
         ・・・・
         ・・・・
    }

延々と else if を続けて記述していて冗長に感じています。
もっとスマートなやり方はないものでしょうか?

開発環境は Windows XP SP3 + VS2005 C# .NET 2.0 です。
.NETのバージョンを上げればこうできるみたいなアドバイスも歓迎です。
どうぞよろしくお願い致します。

返信 編集キー/


管理者用

- Child Tree -