Есть два вопроса по решению проблемы здесь: читабельности и понятности
Решение «читаемость» является вопросом стиля и как таковой является открытым для интерпретации , Я предпочитаю это:
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.
Это, как известно, формальный рефакторинг «Decompose Conditional». Инструменты, такие как Resharper или Refactor Pro! может сделать этот вид рефакторинга простым!
Во всех случаях ключ к чтению и понятному коду заключается в использовании реалистичных имен переменных. Хотя я понимаю, что это надуманный пример: «var1», «var2» и т. Д. не допустимые имена переменных. Они должны иметь имя, которое отражает основной характер данных, которые они представляют.
Простая, легкие дела, и эффективную. – 2010-05-13 11:12:20