-1

アプリケーションのアルゴリズムを開発するのに苦労しています。複数のデバイスと複数のスタイルに対応するために、アプリケーションは非常に柔軟である必要があります。

デバイスの 1 つのルールの 1 つを次に示します。

Only for styles 1,2,3,8,9,10
If slope = I2t
  Range: 2-24
  Step 0.5
If slope = I4t
  Range: 1-5
  Step 0.5
If slope = Mod Inv 
  Range: 0.1-5.0
  Step 0.1
If slope = Very Inv or Ext Inv
    Range 0.2-5.0
    Step 0.1

Ony for Styles 4,5,6,7
If slope = I2t
    Range: 2-24
    Step 0.5
If slope = I4t
    Range: 1-5
    Step 0.5
If slope = IEC-A
    Range: 0.05 - 1.00
    Step 0.05
If slope = IEC-B
    Range: 0.10 - 1.00
    Step 0.05
If slope = IEC-C
    Range: 0.20-1.00
    Step 0.05

これで、この特定のデバイス用にこれをコーディングできましたが、ステートメントのセットが異なるデバイスが複数あります。現在、ファイルからこれらの値を読み込んでいます。これにより、コードを変更せずにプログラムがサポートするデバイスの数を更新できるため、メンテナンスが軽減されます。

助言がありますか?

4

1 に答える 1

0

table-way を使用して、入力値と対応する構成設定を保存し、辞書で調べることができます。このようなもの:

struct ConfigKey
{
     public readonly int Style;
     public readonly string Slope;
     public ConfigKey(int style, string slope) 
     {
        this.Style = style;
        this.Slope= slope;
     }
     public override bool Equals(object obj)
     {
         if (!(obj is ConfigKey))
         {
             return false;
         }
         ConfigKey other = (ConfigKey)obj;
         return this.Style == other.Style && this.Slope == other.Slope;
     }

     public override int GetHashCode()
     {
         return Style.GetHashCode() ^ Slope.GetHashCode();
     }
}
struct Config
{
    String  Range {get; set;}
    Double Step { get; set; }
}
Dictionary<ConfigKey, Config> conf = new Dictionary<ConfigKey, Config>();

public Config GetConfig(int style, string slope)
{
    return conf[new ConfigKey(style, slope)];
}
于 2013-02-26T13:38:22.297 に答える