Angenommen, wir haben eine Codebasis, die für viele verschiedene Kunden verwendet wird, und wir haben Code, der nur für Kunden vom Typ X relevant ist. Ist es besser, Präprozessoranweisungen zu verwenden, um diesen Code nur in Kunden vom Typ X aufzunehmen, oder if-Anweisungen verwenden? Um klarer zu sein:
// some code
#if TYPE_X_COSTUMER = 1
// do some things
#endif
// rest of the code
oder
if(TYPE_X_COSTUMER) {
// do some things
}
Die Argumente, über die ich nachdenken kann, sind:
- Die Präprozessor-Direktive führt zu einem geringeren Code-Footprint und weniger Verzweigungen (bei nicht optimierenden Compilern).
- Wenn Anweisungen zu Code führen, der immer kompiliert wird, z. B. wenn jemand einen Fehler macht, der den irrelevanten Code für das Projekt, an dem er arbeitet, beschädigt, wird der Fehler weiterhin angezeigt und die Codebasis wird nicht beschädigt. Andernfalls wird ihm die Korruption nicht bekannt sein.
- Mir wurde immer gesagt, ich solle die Verwendung des Prozessors der Verwendung des Präprozessors vorziehen (wenn dies überhaupt ein Argument ist ...)
Was ist vorzuziehen - wenn es um eine Codebasis für viele verschiedene Kunden geht?
TYPE_X_CUSTOMER
noch ein Präprozessor-Makro?