Как было предложено, используйте индентор для обеспечения согласованного отступа. Существует несколько надстроек VBIDE, которые предоставляют эту функциональность, включая оригинальный Smart Indenter (бесплатный, только 32-разрядный) и Rubberduck (бесплатный, с открытым исходным кодом, также работает на 64-разрядных хостах - я м вкладчик).
Напишите меньшие процедуры
Процедуры, которые требуют столько же, сколько , чтобы выполнить обещание, данное их именем. Процедуры, которые делают одну вещь, обычно делают это хорошо, и их довольно легко назвать осмысленно.
Если у вас есть вложенный цикл, внутренний цикл может быть извлечен в свою собственную область. Если вложенный цикл имеет условное выражение, каждая условная ветвь может быть реорганизована и извлечена в свою собственную область. Вероятный результат состоит в том, что вы в конечном итоге удаляете избыточный код , потому что во многих случаях то, что вы извлекаете из одной ветви, очень похоже на то, что вы вытаскиваете из другой ветви, сохраните несколько значений параметров, которые, однажды рефакторинг, становятся актуальными параметрами; процедуры становятся меньше, более специализированными, они делают так мало, что называть их тривиально: «эта процедура делает X», и это совершенно ясно из кода.
Refactor Arrow Code
У Джеффа Этвуда есть отличная статья под названием Код выравнивающей стрелки . Если ваш код выглядит так:
If ...
If ...
If...
For ...
For ...
If ...
...
End If
Next
Next
End If
End If
End If
... у вас есть код стрелки . Существуют известные, документированные методы для подлинного улучшения такого кода, и '~~~~~~BANNER COMMENTS~~~~~
не является одним из них.
Заменить условия защитными оговорками.
If SomeImportantCondition Then
'procedure body
End If
становится:
If Not SomeImportantCondition Then Exit Sub / Err.Raise ...
'procedure body
Извлечение условных блоков в их собственную область.
Инвертировать условия для уменьшения вложенности.
Возвращайтесь / выходите пораньше, если можете.
Цель состоит в том, чтобы максимально уменьшить горизонтальную прокрутку и уменьшить вложенность и цикломатическую сложность - которые являются реальными измеримыми показателями , которые могут быть действовал.

Комментарии для высказывания почему , а не что . Пусть код скажет что .