Цитата |
---|
Jack Famous написал: Вот, собственно, пример кода с метками. Тот самый, о котором я вчера писал в оффтопе. Что и почему вы бы заменили в нём? |
На мой субъективный взгляд, организация циклов и ветвлений в Вашем коде не режет глаз и в целом понятна и читаема (пусть даже сам я никогда так не пишу).
В отличие от префикса WF_ у каждой (каждой!) переменной. Если бы вдруг мне волею судеб пришлось модифицировать/рецензировать этот код, я бы начал с удаления этого префикса совсем, либо (если он несёт в себе какую-то смысловую нагрузку) его выноса в имя процедуры, а метки и структуру постарался бы оставить без изменений.
Почему я бы так поступил:
1) CapsLock традиционно резервируется под константы. Использование в другом контексте сбивает с толку.
2) Нижнее подчёркивание в VBA резервируется под имена событий и переносы строк. Использование в другом контексте, особенно с верхним регистром, сбивает с толку.
3) Префикс, который относится одновременно ко всем (или почти всем) переменным процедуры, избыточен в рамках этой процедуры, потому что итак ясно, что все переменные в ней - локальные, а ничего другого такой префикс не сообщает. Если вдруг в процедуре используются 1-2 переменные из внешних областей видимости, то всегда проще выделить как-то именно их, а не все остальные вплоть до индексов цикла.
По теме: сам я пользуюсь и For, и While, и For Each циклами, отталкиваясь от формулировки задачи и цели. Например, если по условию задачи циклу надо работать
пока не будет выполнено какое-то условие, то и цикл использую While, а не For с выходом. Если надо выполнить операцию некоторое количество раз, например, перебрать все индексы массива от начала до конца, то цикл For. Если есть коллекция и надо что-то сделать с каждым её элементом, то For Each. Грубо говоря, стараюсь писать код как можно лексически ближе к псевдокоду.
Понятно, что циклы взаимозаменяемы в большинстве случаев, но использование циклов со счётчиками для задачи поиска условия сбивает с толку и заставляет ломать голову над тем, почему автор кода вдруг такое учудил.
А вот что действительно бесит иногда - это неявные циклы с помощью GoTo и условий. Потому что ключевые слова в купе с форматированием циклов сразу дают понять, что это - цикл, и показывают, где у него начало, а где конец, а не заставляют мучительно скакать глазами со строки на строку в поисках начала и конца итерации.