su compilador debe ser lo suficientemente inteligente como para darse cuenta de que:
final DEBUG=false;
...
if(DEBUG)
return new debugMeh();
else
return new meh();
el método nunca tiene que ser llamado y puede, de hecho, ser compilado fuera del montaje final.
Eso, más el hecho de que incluso la diferencia de rendimiento no optimizado no sería significativo, lo que hace que el uso de una sintaxis diferente sea innecesaria.
EDIT: Me gustaría señalar algo interesante aquí. Alguien en los comentarios que acaba de decir que esto:
#IF DEBUG
return new TestFoo();
#ELSE
return new Foo();
#ENDIF
era más fácil escribir que esto:
if(DEBUG)
return new TestFoo();
else
return new Foo();
Me resulta realmente sorprendente las longitudes que la gente vaya a defender el camino que han hecho cosas como correcto Otro dijo que tendrían que definir una variable DEBUG en cada archivo. No estoy seguro acerca de C#, pero en Java por lo general poner un
public static final DEBUG=true;
en nuestro registrador u otro objeto central de la fábrica (aunque en realidad encontrar mejores maneras de hacer esto - como el uso de DI).
No digo que las mismas instalaciones no existan en C#, estoy sorprendido de la cantidad de personas que acudirán para demostrar que la solución que tienen es la correcta.
Esta respuesta combinada con la respuesta/razonamiento de Mitch Wheat parece ser la mejor respuesta al problema. Gracias chicos. – Michael
Esto no responde a la pregunta inicial que todavía se usa y dónde/cuándo, etc.:( – peteski