Există două aspecte care trebuie abordate aici: lizibilitatea și înțelegerea
Soluția "de citire" este o problemă de stil și, ca atare, este deschisă interpretării. Preferința mea este următoarea:
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
{ }
sau asta:
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
{ }
Acestea fiind spuse, acest tip de verificare complexă poate fi destul de greu de analizat în mod mental în timpul scanării codului (mai ales dacă nu sunteți autorul original). Luați în considerare crearea unei metode de ajutor pentru a elimina o parte din complexitate:
///
/// Tests whether all the conditions are appropriately met
///
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
}
}
Acum, când scanăm vizual metoda "SomeMethod", complexitatea reală a logicii de testare este ascunsă, însă sensul semantic este păstrat pentru ca oamenii să înțeleagă la un nivel înalt. Dacă dezvoltatorul are nevoie să înțeleagă detaliile, este posibil să se examineze metoda AreAllConditionsMet.
Acest lucru este cunoscut în mod formal ca modelul de refacere "Descompune condițional", cred. Instrumente precum Resharper sau Refactor Pro! poate face acest fel de refactoring ușor!
În toate cazurile, cheia pentru a avea un cod lizibil și ușor de înțeles este să utilizați nume de variabile realiste. În timp ce înțeleg acest lucru este un exemplu conturat, "var1", "var2", etc sunt nu nume de variabile acceptabile. Acestea ar trebui să aibă un nume care să reflecte natura fundamentală a datelor pe care le reprezintă.