【質問内容】
定数をメソッドの引数に入れるべきか、それともダイレクトに利用すべきかを悩んでいます。
【現状】
定数はまとめて定数用のConstants.csファイルにまとめています。
定数を利用するメソッドを呼び出すときに、処理内で利用する定数が分かりやすいようにメソッドの引数に入れています。
が、そのメソッドも他のメソッドから呼び出すので大元のメソッドの引数が多くなり、このようなことはやめるべきなのかなと思いましたがどちらがいいのか分からないのでアドバイスをよろしくお願いします。
なぜ定数をメソッドの引数に入れたかというと、外部から入力される値を引数の中に入れておくとコードの可読性が上がるのではないかと思ったからです。
よろしくお願いします。
【例】
※いい処理内容が思いつかなかったのでコード内容がかなり変ですが、定数をメソッドの引数に入れるべきかどうかでアドバイスをお願いします。
CheckPass()メソッドで定数の値チェックを必ず行うようにしています。
C#
1// 定数のみを定義しています。 2namespace ConsoleApplication1 3{ 4 public class Constants 5 { 6 // パスワード 7 public static readonly string PASSWORD = "1234abc"; 8 } 9} 10 11 12using System; 13using System.Text.RegularExpressions; 14using constants = ConsoleApplication1.Constants; 15 16namespace ConsoleApplication1 17{ 18 class Program 19 { 20 static void Main(string[] args) 21 { 22 // ここに定数を入れるべきかを悩んでいます。 23 Show(constants.PASSWORD); 24 } 25 26 // 表示します。 27 public static void Show(string str) 28 { 29 Console.WriteLine(CheckPass(str)); 30 } 31 32 // 文字を削除して数字のみにします。 33 public static string CheckPass(string str) 34 { 35 Regex re = new Regex(@"[^0-9]"); 36 string result = re.Replace(str, ""); 37 return result; 38 } 39 } 40}
上記のようにするよりも以下のようにした方がいいでしょうか?
C#
1// 定数のみを定義しています。 2namespace ConsoleApplication1 3{ 4 public class Constants 5 { 6 // パスワード 7 public static readonly string PASSWORD = "1234"; 8 } 9} 10 11using System; 12using System.Text.RegularExpressions; 13using constants = ConsoleApplication1.Constants; 14 15// 定数はメソッドの引数に入れずにダイレクトに利用しています。 16namespace ConsoleApplication1 17{ 18 class Program 19 { 20 static void Main(string[] args) 21 { 22 Show(); 23 } 24 25 // 表示します。 26 public static void Show() 27 { 28 Console.WriteLine(CheckPass()); 29 } 30 31 // 文字を削除して数字のみにします。 32 public static string CheckPass() 33 { 34 Regex re = new Regex(@"[^0-9]"); 35 string result = re.Replace(constants.PASSWORD, ""); 36 return result; 37 } 38 } 39}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/19 12:54