引数がどんどん増えていってしまうことが多々あります。
一箇所のみであるのならば少しの手間で修正できますが
いくつかの場所の修正が必要な場合、ミスのもとになります。
今日は、引数が多くなってしまった、もしくは引数の変更が有り得そうな場合の手法を
以前、教えてもらったので忘れないようにメモ。
方法は簡単。引数に必要なデータを揃えたクラスを作成するのです。
以下サンプルです。
/// <summary> /// メイン処理です。 /// </summary> public void MainProcess() { var param1 = new Parameter(); param1.Code = 1001; param1.Name = "田中太郎"; param1.Age = 45; param1.DepartmentId = 1; Display(param1); var param2 = new Parameter(); param2.Code = 1002; param2.Name = "山田花子"; param2.Age = 27; param2.DepartmentId = 2; Display(param2); var param3 = new Parameter(); param3.Code = 1003; param3.Name = "山本一郎"; param3.Age = 35; param3.DepartmentId = 3; Display(param3); } /// <summary> /// 情報を出力します。 /// </summary> /// <param name="param">パラメータクラス</param> public void Display(Parameter param) { Console.WriteLine("-----------------------"); Console.WriteLine($"[コード]:{param.Code}"); Console.WriteLine($"[名 前]:{param.Name}"); Console.WriteLine($"[年 齢]:{param.Age}"); Console.WriteLine($"[部署ID]:{param.DepartmentId}"); Console.WriteLine($"[部署名]:{param.GetDepartment()}"); } /// <summary> /// パラメータクラスです。 /// </summary> public class Parameter { /// <summary> /// コード /// </summary> public int Code { get; set; } /// <summary> /// 名前 /// </summary> public string Name { get; set; } /// <summary> /// 年齢 /// </summary> public int Age { get; set; } /// <summary> /// 部署ID /// </summary> public int DepartmentId { get; set; } /// <summary> /// 部署名を取得します。 /// </summary> /// <returns>部署名</returns> public string GetDepartment() { if (this.DepartmentId == 1) { return "本部"; } else if (this.DepartmentId == 2) { return "経理"; } else { return "システム"; } } }
出力結果
----------------------- [コード]:1001 [名 前]:田中太郎 [年 齢]:45 [部署ID]:1 [部署名]:本部 ----------------------- [コード]:1002 [名 前]:山田花子 [年 齢]:27 [部署ID]:2 [部署名]:経理 ----------------------- [コード]:1003 [名 前]:山本一郎 [年 齢]:35 [部署ID]:3 [部署名]:システム
このサンプルを見てもらうとわかるのですが
あとから引数変えたいな…って場合はParameterクラスの変更だけで完了します。
今後のメンテナンスも楽になりますね!