関心領域が異なるパラメータをメソッド引数に入れるのは、あまり良いコードとは言えません。
例えばデータを複数のバリデータでチェックするケースで、そこで使うバリデータのメソッド設計がこんな感じのコードがありました。
namespace App1 { class Validator { public static Boolean isValidXx<T>(T targetValue, Boolean validateResult) { Boolean result=true; if(result){ //targetValueのチェックをして結果を返す } return result && validateResult; } public static Boolean isValidYy<T>(T targetValue, Boolean validateResult) { Boolean result = true; if (result) { //targetValueのチェックをして結果を返す } return result && validateResult; } } class Program { static void Main(string[] args) { int target=1; Boolean validateResult; validateResult = Validator.isValidXx<int>(target, true); validateResult = Validator.isValidYy<int>(target,validateResult); } } }
意図としてはわからなくもないのですが、バリデータメソッドの関心領域はtargetValueの評価です。
しかし、上記コードは他バリデータの結果も考慮してしまっていて、関心領域が混ざってしまっています。
バリデータの関心はtargetValueを評価することで、複数のバリデータの結果に関心があるのはバリデータのユーザーのはずですので、下記の様に書くのが正しいと言えます。
namespace App1 { class Validator { public static Boolean isValidXx<T>(T targetValue) { Boolean result=true; if(result){ //targetValueのチェックをして結果を返す } return result; } public static Boolean isValidYy<T>(T targetValue) { Boolean result=true; if(result){ //targetValueのチェックをして結果を返す } return result; } } class Program { static void Main(string[] args) { int target=1; Boolean validateResult; validateResult = Validator.isValidXx<int>(target); validateResult &= Validator.isValidYy<int>(target); } } }
バリデータはtargetValueの評価のみを行い、複数バリデータの結果が欲しいMainが複数のチェック結果を取りまとめています。