aは提供されたitemIDsに応じてユーザー情報の配列を返す外部dllを持っています。そのための単純なコード、次のようになります。リファクタリングの最も良い方法は配列要素へのアクセス
private string userName;
private int userAge;
const string NAME = "NAME";
const string AGE = "AGE";
string[] arrID = { NAME, AGE }; //IDs to get name and age, to get surname please add "SURNAME" to the array
User[] users;
string[] results; //OK - item found, Unknown - item id not found
////////read from external dll////////
databaseAccessor.GetUsers(arrID, out users, out results);
//////////////////////////////////////
int itemNameIndex = Array.IndexOf(arrID, NAME);
int itemAgeIndex = Array.IndexOf(arrID, AGE);
if(results[itemNameIndex] == "OK")
{
userName = users[itemNameIndex].Name;
}
if(results[itemAgeIndex] == "OK")
{
userAge = users[itemAgeIndex].Age;
}
私は新しいユーザー「機能」などを取得しようとしたとき、もし新しい句が追加されなければならないので、このコードは好きではありません高さ。変更できないことの1つは、外部DLLへの呼び出しですdatabaseAccessor.GetUsers(arrID, out users, out results);
新しいifsを追加しないようにリファクタリングするにはどうすればよいでしょうか?
「User」クラスの外観を教えてください。 – ViRuSTriNiTy
結果配列とユーザー配列の内容がわかりません。結果配列には、要求された各FIELD(「NAME」や「AGE」など)の結果が含まれていますが、同じインデックスを持つユーザー配列(itemNameIndexおよびitemAgeIndex)。外部DLLから返される配列の内容の例を挙げることができますか? – Quido