Когда целесообразно использовать условную компиляцию вместо обычных операторов if-else? - PullRequest
0 голосов
/ 23 мая 2011

Я вижу, что есть некоторые преимущества для условной компиляции с использованием таких конструкций, как #ifdef, по сравнению с условными проверками во время выполнения, такими как меньший размер скомпилированного файла, возможно, более быстрое выполнение и несколько более простая отладка, но когда уместно использовать одну над другой?Лучше ли использовать условные проверки во время выполнения, когда вычисляемый условный оператор может быть определен только во время выполнения?

По моему мнению, смешивание #ifdefs с регулярными операторами if-then-else делает код уродливым и труднеечитай, поэтому я стараюсь избегать условной компиляции.Однако я заметил, что во многих примерах классов журнала C # условная компиляция используется, чтобы определить, когда выполнять регистрацию, в зависимости от того, определены ли такие символы, как DEBUG / SHIP / TRACE.

Ответы [ 2 ]

2 голосов
/ 23 мая 2011

Лучше минимизировать использование # ifdef.Как вы сказали, они затрудняют чтение и отладку кода.

Они могут быть неизбежны при нацеливании на разные платформы или при наличии различий между версиями отладки / выпуска.

Производительность может быть соображением использования # ifdef, например, для отладки, но в большинстве случаев влияние дополнительного условного оператора для проверки уровня журнала будет незначительным.Я бы сказал, что вам нужно профилировать код и определить, что это узкое место, прежде чем преобразовывать условную логику в # ifdef's

0 голосов
/ 23 мая 2011

Условная компиляция должна использоваться для таких вещей, как компиляция одного и того же исходного кода для разных платформ или если у вас разные версии программы (например, тестовая версия и полная версия).

...