I've found myself limiting scope fairly often. I find it makes code much clearer, and allows me to reuse variables much more easily. This is especially handy in C where variables must be declared at the start of a new scope.
Here is an example of what I mean.
{
int h = 0;
foreach (var item in photos)
{
buffer = t.NewRow();
h = item.IndexOf("\\x\\");
buffer["name"] = item.Substring(h, item.Length - h);
t.Rows.Add(buffer);
}
}
With this example, I've limited the scope of h, without initializing it in every iteration.
But I don't see many other developers doing this very often. Why is that? Is there a downside to doing this?