У програмі, яку я взяв від іншого розробника, я натрапив на таке умовне:
if (obj.Performance <= LOW_PERFORMANCE)
{
obj.NeedsChange = true;
}
else
{
obj.NeedsChange = false;
}
Я вважаю, що цей код є зайвим і некрасивим, тому я змінив його на те, що, на мою думку, було простим булевим завданням на основі порівняння:
obj.NeedsChange = obj.Performance <= LOW_PERFORMANCE;
Побачивши це, хтось, переглядаючи мій код, прокоментував, що, хоча моя зміна є функціонально правильною, вона може заплутати когось іншого, хто дивиться на неї. Він вважає, що використання потрійного оператора робить це завдання більш зрозумілим, тоді як мені не подобається додавання більш зайвого коду:
obj.NeedsChange = (obj.Performance <= LOW_PERFORMANCE) ? true : false;
Його міркування полягають у тому, що робити щось найбільш стислим способом не варто, якщо це змусить іншого розробника зупинитися і загадувати саме те, що ви зробили.
Справжнє запитання тут полягає в тому, який із цих трьох методів присвоєння булевого значення obj.NeedsChange
є найбільш зрозумілим і найбільш ретельним?