Załóżmy, że mamy bazę kodów, która jest używana dla wielu różnych klientów, i mamy w niej trochę kodu, który jest odpowiedni tylko dla klientów typu X. Czy lepiej jest użyć dyrektyw preprocesora, aby uwzględnić ten kod tylko u klienta typu X lub używać instrukcji if? Aby być bardziej zrozumiałym:
// some code
#if TYPE_X_COSTUMER = 1
// do some things
#endif
// rest of the code
lub
if(TYPE_X_COSTUMER) {
// do some things
}
Argumenty, o których mogę pomyśleć, to:
- Dyrektywa preprocesora skutkuje mniejszą powierzchnią kodu i mniejszą liczbą gałęzi (w przypadku nieoptymalizujących kompilatorów)
- Jeśli wyniki zawierają kod, który zawsze się kompiluje, np. Jeśli ktoś popełni błąd, który zaszkodzi nieistotnemu kodowi dla projektu, nad którym pracuje, błąd nadal będzie się pojawiał i nie uszkodzi bazy kodu. W przeciwnym razie nie będzie świadomy zepsucia.
- Zawsze mówiono mi, że wolę używać procesora niż preprocesora (jeśli jest to w ogóle argument ...)
Co jest lepsze - gdy mówimy o bazie kodu dla wielu różnych klientów?
TYPE_X_CUSTOMER nadal jest makro preprocesora?