Це одне правило стилю серед багатьох, і це не обов'язково найважливіше правило з усіх можливих правил, які ви могли б врахувати. Ваш приклад, оскільки він включає в себе int, не є надто переконливим, але ви, безумовно, можете мати дорогий для побудови об'єкт всередині цього циклу, і, можливо, хороший аргумент для побудови об'єкта поза циклом. Однак це не є гарним аргументом проти цього правила, оскільки, по-перше, існує багато інших місць, які він може застосувати, які не передбачають побудови дорогих об'єктів у циклі, по-друге, хорошого оптимізатора (і ви помітили теги C #, тому у вас хороший оптимізатор) може підняти ініціалізацію з циклу.
Справжня причина цього правила також є причиною того, що ви не бачите, чому це правило. Люди писали функції, що складали сотні, навіть тисячі рядків, і вони писали їх у текстових редакторах (думаю, Блокнот) без такої підтримки, яку надала Visual Studio. У цьому середовищі оголошення змінної сотні рядків від місця її використання означало, що людина, яка читає
if (flag) limit += factor;
не було багато підказок про те, що таке прапор, межа та коефіцієнт. Для сприяння цьому було прийнято називати такі конвенції, як угорська нотація, і такі правила, як декларування речей, близьких до місця їх використання. Звичайно, в наші дні все стосується рефакторингу, а функції, як правило, менше сторінки, тому важко провести велику відстань між тим, де декларуються речі, і де вони використовуються. Ви працюєте в діапазоні 0-20 і хитаєтесь, що, можливо, 7 нормально в цьому конкретному випадку, тоді як хлопець, який створив правило, ЛЮБИТЬ, щоб забрати 7 рядків і намагався розмовляти з кимось з 700. І далі Крім того, у Visual Studio ви можете навести курсор миші на що-небудь і побачити його тип, чи є це змінною члена тощо. Це означає, що необхідність бачити рядок, що оголошує її, зменшується.
Це все ще досить хороше правило, одне з яких насправді досить важко зламати, і те, яке ніхто ніколи не виступав за причину писати повільний код. Будьте уважні, перш за все.