Тема: Оформлення кількох випадків циклів
Я помітив, що не можу придумати загальної норми для оформлення кількох ситуацій з циклами. Можливо, справа тут в тому, що я дарма ці ситуації об'єдную, і там немає і не може бути загальних норм? Чи просто мені не траплявся нормальний код? Чи я пропустив ці випадки саме тому, що код читався легко, і мені не спало на думку, що це мої "складні" випадки?
Отже, випадки:
1. Кілки і жердини: в паркані n горизонтальних жердин і, відповідно, n+1 кілків. Треба в циклі їх пофарбувати. Як робити краще - фарбувати "зайвий" кілок перед циклом чи після? Що легше читається? Чи це залежить від конкретної ситуації?
2. Окремий випадок, коли циклу не відбувається: якщо умова циклу від самого початку не виконується, слід обробити окрему ситуацію. При цьому виникає комбінація
if( X )
{
while( X )
{}
}
else
{}
з двома повтореннями умови, і це некрасиво, як на мене.
3. Цикл із складною умовою повторення. Складні логічні умови бажано розбивати на простіші і давати їм імена, тобто замість
while( ( i > 0 ) && ( i < length() ) && isCorrect( element[ i ] ) )
бажано робити щось на кшталт
bool isInRange = true,
mayContinue = isCorrect( element[ i ] );
while( mayContinue )
{
...
isInRange = ( i > 0 ) && ( i < length() );
mayContinue = isInRange && isCorrect( element[ i ] );
}
але тоді дуже складно загнати ці умови в цикл, щоб це зручно виглядало: по-перше, щонайменше половина коду перевірки записана до циклу і в його кінці, а по-друге, створюються зайві змінні.
Хтось має якісь коментарі до цих фрагментів? Де я туплю?