Прекратите использовать i в циклах

Прекратите использовать i в циклах

IT-юмор

5.6K постов52.5K подписчиков

Добавить пост

Правила сообщества

Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору

Вы смотрите срез комментариев. Показать все
40
Автор поста оценил этот комментарий
А почему и нет? Когда i означает именно индекс, это более чем классическое обозначение, которое всем понятно. От этого код не становиться более непонятным, это же не тот случай, когда обычные переменные называют "а", "b" и ты фиг поймешь, что это именно такое.

В написании кода есть намного больше проблем в стиле написания, чем это.
раскрыть ветку (37)
9
Автор поста оценил этот комментарий

Причем, сука, i в цикле это наверное единственное на чем сошлись разработчики во всем мире, и понятно везде.

8
Автор поста оценил этот комментарий

по нормальному нужно называть переменные в сооиветствии с их контекстом по смыслу

к примеру если перебираешь массив $myOrders
использовать не $i $v а $myOrderIndex $myOrderValue
иначе при добавлении циклов внутрь этого,

получается каша из букв и легко перепутать где чей индекс, читаемость кода падает, появляются ошибки

раскрыть ветку (11)
13
Автор поста оценил этот комментарий

Переменные i, j, k - тоже вполне себе названы в соответствие со смыслом и контекстом:

i - счетчик цикла первого уровня
j - счетчик цикла второго уровня
k - счетчик цикла третьего уровня

Если вам потребовалось больше трех уровней вложенности - скорее всего, вы что-то делаете не так :)

Использование длинных названий для счетчиков ведет к раздуванию кода что напротив, только снижает читаемость. Сравните:

avrage = (myOrder[i - 1] + myOrder[i] + myOrder[i + 1]) / 3;

avrage = (myOrder[myOrderIndex - 1] + myOrder[myOrderIndex] + myOrder[myOrderIndex + 1]) / 3;

А переменные типа v - да, за это руки надо отрывать. Я допускаю использования неконкретных идентификаторов типа value, item, row только в циклах из пары строк, где путаницы возникнуть не может.

раскрыть ветку (2)
Автор поста оценил этот комментарий

Это только если один одномерный массив крутится. А если несколько, двумерных, да ещё и с транспонированием и/или индекс от индекса.

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Счетчик - это переменная, последовательно принимающая значения от 0 до n. Если с ней что-то происходит еще - значит, это уже не счетчик, соответственно, и название должно быть иное.

1
Автор поста оценил этот комментарий

Роботов для биржи кодите?

раскрыть ветку (1)
Автор поста оценил этот комментарий

Ага, роботов, для биржи...

Иллюстрация к комментарию
Иллюстрация к комментарию
2
DELETED
Автор поста оценил этот комментарий

Цикл в цикле? Фу-фу

раскрыть ветку (5)
6
Автор поста оценил этот комментарий
Ну да, сложных и вложенных объектов в природе же не существует. И мапы сами собой появляются, тоже без прохождению по более чем одному циклу
раскрыть ветку (3)
DELETED
Автор поста оценил этот комментарий

Если появляется спагетти из более чем двух вложенных циклов, то пора задуматься, так как что-то идёт не так.

раскрыть ветку (2)
Автор поста оценил этот комментарий
А если трёхмерный массив?
раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Обход n-мерных массивов - исключение, и я более чем уверен, что вы понимаете о чем я говорю. Когда смотришь нечитаемый код из 3-4-10 циклов друг в дружке, хочется повеситься. Тоже самое, если в C# бездумно применяют Linq - это не читаемо и не поддерживаемо в принципе.

Автор поста оценил этот комментарий
А как иначе матрицы перебирать?
4
Автор поста оценил этот комментарий

это же не тот случай, когда обычные переменные называют "а", "b" и ты фиг поймешь, что это именно такое.
А что именно я "фиг пойму"? Ты, по сути, объявляешь эту "а" в for, а после используешь её как индекс. Как тут можно не понять, что она делает - хз.


Для жуниоров наверное нормально.

раскрыть ветку (1)
4
Автор поста оценил этот комментарий

Понять можно что угодно. Но читать удобнее стандартные обозначения. Что джун, что сеньор будут некоторое время тупить над переменной а. Причем сеньор даже дольше, так как будет искать скрытый смысл.

ещё комментарии
Автор поста оценил этот комментарий

Потому что итераторы тоже иногда особо умные называют какi

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку