Какова лучшая практика для операторов отладки, в которых есть строковые операции? - PullRequest
2 голосов
/ 28 мая 2009

Я часто обнаруживаю, что добавляю либо конкатонированные строки, либо использую формататор строк в своих операторах отладки в log4net и log4j, если я окружу эти операторы отладки блоком "if debug", чтобы не тратить ресурсы впустую, обрабатывая эти параметры, даже если оператор отладки не будет распечатан?

Я бы предположил, что проверка, является ли (isDebug) быстрее и эффективнее, чем выполнение строковых операций, однако это приведет к тому, что программа будет работать по-другому (быстрее), если уровень отладки установлен выше отладки, что может означать что проблемы с синхронизацией, возникающие в производственной среде, не возникают, когда я пишу в журнал.

Ответы [ 11 ]

0 голосов
/ 28 мая 2009

Условная компиляция работает с конечными константами, которые являются статическими конечными переменными. Класс может определять константу следующим образом:

private static final boolean DEBUG = false;

С такой определенной константой любой код внутри:

if (DEBUG) {
    // code
} 

фактически не скомпилирован в файл класса . Чтобы активировать отладку для класса, нужно только изменить значение константы на true и перекомпилировать класс (у вас может быть две версии ваших двоичных файлов, одна для разработки и одна для производства).

Однако это решение является неоптимальным по нескольким причинам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...