Conditional compile
The conditional compilation practice is used to optionally remove chunks of code from the compiled version of a class. It uses the fact that compilers will ignore any unreachable branches of code.
To implement conditional compilation,
- define a static final boolean value as a non-private member of some class
- place code which is to be conditionally compiled in an if block which evaluates the boolean
- set the value of the boolean to false to cause the compiler to ignore the if block; otherwise, keep its value as true
Example
public final class Debug { //set to false to allow compiler to identify and eliminate //unreachable code public static final boolean ON = true; }
This class uses Debug to implement conditional compilation :
import javax.servlet.*; import javax.servlet.http.*; import java.io.*; /** * Uses conditional compilation to optionally print debugging statements. */ public final class GenericServlet extends HttpServlet { public void init(ServletConfig aConfig) throws ServletException { super.init(aConfig); //print out a message, but only if Debug.ON evaluates to true //if Debug.ON evaluates to false, this entire block of code will be //passed over by the compiler, and will not be present in output .class file if (Debug.ON) { System.out.println("**** INIT OF My Controller *****"); } } public void doGet( HttpServletRequest aRequest, HttpServletResponse aResponse ) throws ServletException, IOException { if (Debug.ON) { System.out.println("Processing doGet"); } doHttpRequest(aRequest, aResponse); } public void doPost( HttpServletRequest aRequest, HttpServletResponse aResponse ) throws ServletException, IOException { if (Debug.ON) { System.out.println("Processing doPost"); } doHttpRequest(aRequest, aResponse); } // PRIVATE // private void doHttpRequest( HttpServletRequest aRequest, HttpServletResponse aResponse ) throws ServletException, IOException { //empty } }
See Also :
Would you use this technique?
|
|