-6

重複したコードがあります:

var client = new RSClient.RSClient();

var Params = new RsParameter[1];
Params[0] = new RsParameter {Key = "order_id", Value = orderId};
var result = client.GetPreparedReportSimple(login, password, "CREDO_ORDER", Params);

var client = new RSClient.RSClient();

var Params = new RsParameter[2];
Params[0] = new RsParameter {Key = "calculation_id", Value = calculationId};
Params[1] = new RsParameter {Key = "calculation_date", Value = calculationDate};
var result = client.GetPreparedReportSimpleExport(login, password, "CREDO_RSV_ACTIVE", Params, "XLS");

どうすればこれをより良くすることができますか?

4

3 に答える 3

0

コードをリファクタリングしてメソッドを抽出できます。これは次のようになります。

public __?___ Method(string login, string password, string something, string[] parameters, string extra = null) {
    var client = new RSClient.RSClient();

    if (extra == null)
        return client.GetPreparedReportSimple(login, password, something, parameters);
    else
        return client.GetPreparedReportSimple(login, password, something, parameters, extra);
}

あなたがそれを手に入れたら、あなたはそれをこのように呼びます:

var Params = new [] 
    {
        new RsParameter {Key = "order_id", Value = orderId} 
    };
var result = Method(login, password, "CREDO_ORDER", Params);

....

var Params = new [] 
    {
        new RsParameter {Key = "calculation_id", Value = calculationId},
        new RsParameter {Key = "calculation_date", Value = calculationDate}
    };
var result = Method(login, password, "CREDO_ORDER", params, "XLS");
于 2013-02-27T09:34:18.697 に答える
0

まず最初に、

 1- move the export and simple display functionality into 2 different methods.
 2- Create a Client Object exactly once by using Singleton Pattern.
于 2013-02-27T09:36:00.573 に答える
0

2つのケースがさらにある場合は、ループを実行してコードの繰り返しを繰り返しスキップすることができます。反復ごとに異なるデータ(文字列など)を使用して変数を作成するだけです。

keys= new[]
{
    "order_id",
    "calculation_id",
    //etc
}
于 2013-02-27T09:38:03.783 に答える