Совсем недавно я узнал, что вы можете сделать это на С#:
{
// google
string url = "#";
if ( value > 5 )
url = "http://google.com";
menu.Add( new MenuItem(url) );
}
{
// cheese
string url = "#"; // url has to be redefined again,
// so it can't accidently leak into the new menu item
if ( value > 45 )
url = "http://cheese.com";
menu.Add( new MenuItem(url) );
}
вместо i.e.:
string url = "#";
// google
if ( value > 5 )
url = "http://google.com";
menu.Add( new MenuItem(url) );
// cheese
url = "#"; // now I need to remember to reset the url
if ( value > 45 )
url = "http://cheese.com";
menu.Add( new MenuItem(url) );
Это может быть плохой пример, который можно решить многими другими способами.
Существуют ли какие-либо шаблоны, где функция "scope without statement" является хорошей практикой?