Я иногда, но редко, использую блоки открытого кода для ограничения области видимости. Например, возьмите следующий код:
double bedroomTemperature = ReadTemperature(Room.Bedroom);
database.Store(Room.Bedroom, bedroomTemperature);
double bathroomTemperature = ReadTemperature(Room.Bathroom);
database.Store(Room.Bedroom, bedroomTemperature);
Код выглядит на первый взгляд нормально, но содержит небольшую ошибку копирования-вставки. В базе данных мы сохранили температуру в спальне для обоих показаний. Если бы оно было написано как:
{
double bedroomTemperature = ReadTemperature(Room.Bedroom);
database.Store(Room.Bedroom, bedroomTemperature);
}
{
double bathroomTemperature = ReadTemperature(Room.Bathroom);
database.Store(Room.Bedroom, bedroomTemperature);
}
Тогда компилятор (или даже IDE, если он достаточно умен) заметил бы это.
Однако в 90% случаев код может подвергаться рефакторингу, что делает ненужными обнаженные блоки, например, вышеприведенный код лучше написать в виде цикла или двух вызовов метода, который считывает и сохраняет температуру:
foreach (Room room in [] { Room.Bedroom, Room.Bathroom })
{
double temperature = ReadTemperature(room);
database.Store(room, temperature);
}
Голые блоки полезны иногда.