Это одно из стилевых правил среди многих, и это не обязательно самое важное правило из всех возможных правил, которые вы могли бы рассмотреть. Ваш пример, так как он включает int, не является супер убедительным, но вы, конечно, могли бы иметь дорогостоящий для создания объект внутри этого цикла и, возможно, хороший аргумент для создания объекта вне цикла. Тем не менее, это не делает его хорошим аргументом против этого правила, так как, во-первых, есть множество других мест, которые он может применить, которые не связаны с созданием дорогих объектов в цикле, и, во-вторых, хороший оптимизатор (и вы пометили C #, так что у вас есть хороший оптимизатор) может вывести инициализацию из цикла.
Настоящая причина этого правила - также причина, по которой вы не понимаете, почему это правило. Раньше люди писали функции длиной в сотни, даже тысячи строк и писали их в текстовых редакторах (например, в «Блокноте») без поддержки Visual Studio. В этой среде объявление переменной в сотнях строк от места ее использования означало, что человек, читающий
if (flag) limit += factor;
не было много подсказок о том, что флаг, лимит и фактор были. Соглашения об именах, такие как венгерская нотация, были приняты, чтобы помочь с этим, как и правила, такие как объявление вещей, близких к тому, где они используются. Конечно, в наши дни все дело в рефакторинге, и функции, как правило, занимают менее одной страницы, что затрудняет очень большое расстояние между тем, где вещи объявляются, и тем, где они используются. Вы работаете в диапазоне от 0 до 20, и вы говорите, что, возможно, 7 - это нормально, в данном конкретном случае, в то время как парень, который создал правило, хотел бы получить LOVED на расстоянии 7 строк и пытаться отговорить кого-то от 700. И на Вдобавок к этому, в Visual Studio вы можете навести курсор мыши на что угодно и увидеть его тип, является ли он переменной-членом и так далее. Это означает, что необходимость видеть линию, заявляющую, что она уменьшена.
Это все еще довольно хорошее правило, которое на самом деле довольно сложно нарушать в наши дни, и которое никто никогда не поддерживал в качестве причины для написания медленного кода. Будьте разумны, прежде всего.