ここで対処すべき 2 つの問題があります。読みやすさとわかりやすさです。
「読みやすさ」の解決策はスタイルの問題であり、解釈の余地があります。私の好みはこれです:
if (var1 == true && // Explanation of the check
var2 == true && // Explanation of the check
var3 == true && // Explanation of the check
var4 == true && // Explanation of the check
var5 == true && // Explanation of the check
var6 == true) // Explanation of the check
{ }
またはこれ:
if (var1 && // Explanation of the check
var2 && // Explanation of the check
var3 && // Explanation of the check
var4 && // Explanation of the check
var5 && // Explanation of the check
var6) // Explanation of the check
{ }
とはいえ、この種の複雑なチェックは、コードをスキャンしているときに精神的に解析するのが非常に難しい場合があります (特に、オリジナルの作成者でない場合)。複雑さの一部を抽象化するヘルパー メソッドを作成することを検討してください。
/// <Summary>
/// Tests whether all the conditions are appropriately met
/// </Summary>
private bool AreAllConditionsMet (
bool var1,
bool var2,
bool var3,
bool var4,
bool var5,
bool var6)
{
return (
var1 && // Explanation of the check
var2 && // Explanation of the check
var3 && // Explanation of the check
var4 && // Explanation of the check
var5 && // Explanation of the check
var6); // Explanation of the check
}
private void SomeMethod()
{
// Do some stuff (including declare the required variables)
if (AreAllConditionsMet (var1, var2, var3, var4, var5, var6))
{
// Do something
}
}
「SomeMethod」メソッドを視覚的にスキャンすると、テスト ロジックの実際の複雑さは隠されますが、人間が高レベルで理解できるようにセマンティックな意味は保持されます。開発者が本当に詳細を理解する必要がある場合は、AreAllConditionsMet メソッドを調べることができます。
これは正式には「条件付き分解」リファクタリング パターンとして知られていると思います。Resharper や Refactor Pro などのツール! この種のリファクタリングを簡単に行うことができます!
いずれの場合も、コードを読みやすく理解しやすいものにするための鍵は、現実的な変数名を使用することです。これは不自然な例であることは理解していますが、「var1」、「var2」などは受け入れられない変数名です。それらが表すデータの基本的な性質を反映した名前を付ける必要があります。