Ho un codice specifico per piattaforma, come una stringa che ha bisogno di valori diversi su piattaforme diverse come questa:
test.cpp
#if(PLATFORM==ANDROID)
string url="android";
#elif(PLATFORM==IOS)
string url="ios";
#endif
Sto cercando di riscrivere il codice specifico della piattaforma usando cpp separato:
test.cpp
string url=URLHelper::getURL();
URLHelper.h
class URLHelper{
public:
static std::string getURL();
};
URLHelper.cpp (nel solo percorso Android)
#include "URLHelper.h"
std::string URLHelper::getURL(){
return "android";
}
URLHelper.cpp (nel percorso solo iOS)
#include "URLHelper.h"
std::string URLHelper::getURL(){
return "ios";
}
Ho trovato che richiede più linee di codici rispetto a quella originale e sembra meno diretto. Inoltre, più file vengono creati, mi fa sentire più difficile da mantenere. E immagina se ho altre variabili che hanno bisogno di valori diversi su piattaforme diverse, seguendo questa regola, avrei bisogno di un altro metodo (o anche di un altro file cpp) per ogni variabile.
La mia domanda è, quando si scrive codice specifico per la piattaforma, dovremmo sempre usare un file .cpp separato invece di #ifdef, anche usando #ifdef sembra più semplice? È accettabile lasciare talvolta #ifdef?