Considerare una situazione in cui è necessario chiamare le routine successive e fermarsi non appena si restituisce un valore che può essere valutato come positivo (true, object, 1, str (1)).È considerata una cattiva forma eseguire una funzione all'interno di un'istruzione condizionale?
'molto forte la tentazione di fare questo:
if (fruit = getOrange())
elseif (fruit = getApple())
elseif (fruit = getMango())
else fruit = new Banana();
return fruit;
mi piace, ma questo non è uno stile molto ricorrente in quello che può essere considerato il codice di produzione professionale. Uno è probabile che per vedere un po 'di codice più elaborato come:
fruit = getOrange();
if(!fruit){
fruit = getApple();
if(!fruit){
fruit = getMango();
if(!fruit){
fruit = new Banana();
}
}
}
return fruit;
Secondo il dogma su strutture di base, è la forma precedente accettabile? Lo consiglieresti?
Edit:
Mi scuso con coloro che ritenevano che queste funzioni dovevano essere fabbriche o costruttori. Non lo sono, sono solo dei segnaposti. La domanda riguarda più la sintassi che "fabbrica". Queste funzioni potrebbero anche essere lambda.
Dipende dalla lingua. – SLaks