TL; DR Робіть все, що читається найкраще у ваших конкретних обставинах
Візьмемо цей приклад:
for ( int i = 1; i < array.length; i++ )
{
if(something) break;
// perform operations
}
У цьому випадку ми не хочемо, щоб якийсь код у циклі for виконувався, якщо somethingце правда, тому переміщення тесту somethingв поле умови є розумним.
for ( int i = 1; i < array.length && !something; i++ )
Потім знову, залежно від того, чи somethingможна встановити trueперед циклом, але не всередині нього, це може запропонувати більше ясності:
if(!something)
{
for ( int i = 1; i < array.length; i++ )
{...}
}
А тепер уявіть це:
for ( int i = 1; i < array.length; i++ )
{
// perform operations
if(something) break;
// perform more operations
}
Ми надсилаємо туди дуже чітке повідомлення. Якщо somethingпід час обробки масиву стає істинним, тоді відмовтеся від усієї операції. Для того, щоб перенести чек у поле стану, вам потрібно виконати:
for ( int i = 1; i < array.length && !something; i++ )
{
// perform operations
if(!something)
{
// perform more operations
}
}
Можливо, "повідомлення" затуманилося, і ми перевіряємо стан відмови в двох місцях - що робити, якщо умова відмови зміниться, і ми забудемо одне з цих місць?
Звичайно, може бути набагато більше різноманітних форм, які можуть бути петельними та умовами, всі зі своїми нюансами.
Запишіть код так, щоб він добре читався (це, очевидно, дещо суб’єктивно) та стисло. Поза драконівським набором правил кодування всі "правила" мають винятки. Напишіть те, що вам здається, виражає рішення, яке найкраще приймає рішення, і мінімізуйте шанси на майбутні помилки.
conditionсаме.