Nello pseudo codice qui sotto, la chiave variabile deve essere dichiarata e inizializzata al di fuori del contesto che è usata / rilevante perché ci sono due se-blocchi disparati con la stessa identica condizione.
Stavo pensando che sarebbe bello se una lingua potesse considerare due se blocchi del genere avessero lo stesso scopo. Quali sono gli svantaggi, se ce ne sono, con questo approccio?
Prima :
class Foo
static bool CacheEnabled = true
static Foo Get(string name)
Foo result
string key = "cache_" + name
if(CacheEnabled)
if(Cache.GetFoo(key, out result))
return result
result = new Foo()
//
// rest of initialization here..
//
if(CacheEnabled)
Cache.PutFoo(key, result)
return result
Dopo
class Foo
static bool CacheEnabled = true
static Foo Get(string name)
Foo result
if(CacheEnabled)
string key = "cache_" + name
if(Cache.GetFoo(key, out result))
return result
result = new Foo()
//
// rest of initialization here..
//
if(CacheEnabled)
Cache.PutFoo(key, result) // key is available since the condition is the same
return result