The following is a global Apex class that allows you to do just that. Kinda. Actually, it's not nearly as good as removing the code since we still need to execute a few lines, but we're choosing quality over performance here, right? Sprinkle your code with SF.debug(...) and SF.assert(...) statements, then turn them all off simply by setting debuggingValue = false. Move debuggingValue to a custom setting to allow it to be toggled even in a production environment.
global class SF {
//--------------------------------------------------------------------------
// Diagnostics
private static transient Boolean debuggingValue = true;
public static Boolean debugging { get { return debuggingValue; }}
public static void debug(Object message) {
debug(LoggingLevel.DEBUG, message);
}
private static void debug(LoggingLevel level, Object message) {
if (debugging) {
System.debug(level, message);
}
}
public static void assert(Boolean condition) {
assert(condition, null);
}
public static void assert(Boolean condition, Object message) {
if (debugging && !condition) {
throw new SF.AssertionException(String.valueOf(message));
}
}
public static void assertEquals(Object v1, Object v2) {
assertEquals(v1, v2, null);
}
public static void assertEquals(Object v1, Object v2, Object message) {
if (debugging && (v1 != v2)) {
throw new SF.AssertionException(String.valueOf(message));
}
}
public static void assertNotEquals(Object v1, Object v2) {
assertNotEquals(v1, v2, null);
}
public static void assertNotEquals(Object v1, Object v2, Object message) {
if (debugging && (v1 == v2)) {
throw new SF.AssertionException(String.valueOf(message));
}
}
}
No comments:
Post a Comment