我看到使用像#ifdef這樣的結構在條件編譯上有一些好處,比如更小的編譯文件大小,更快的執行速度和更容易的調試等,但是什麼時候適用於另一種呢?當被評估的條件語句只能在運行時確定時,是否使用運行時條件檢查是一種最佳做法?何時適合使用條件編譯而不是常規的if-else語句?
在我看來,將#ifdefs與常規的if-then-else語句混合使得代碼變得難看難懂,所以我傾向於避免條件編譯。但是我注意到,在很多C#日誌類的例子中,條件編譯用於根據是否定義諸如DEBUG/SHIP/TRACE等符號來確定何時執行日誌記錄。