Au lieu d'utiliser #define ou const, je définis généralement les constantes à l'aide des méthodes statiques de classe comme suit:
//AppConstants.h
#include <string>
class AppConstants{
public:
static int getMax();
static std::string getPrefix();
};
//AppConstants.cpp
#include "AppConstants.h"
int AppConstants::getMax(){
return 30;
}
std::string AppConstants::getPrefix(){
return "myprefix";
}
Je le fais généralement lors de la création d'une application mobile, ce que je voudrais économiser le temps de compilation lorsque chaque fois changer la valeur pour le test. Est-ce une mauvaise pratique?
Oui, et c'est inutile aussi. Vous pouvez déclarer des constantes dans les en-têtes et les définir dans les fichiers source tout comme les fonctions:
class AppConstants {
public:
static const int Max;
static const std::string Prefix;
};
const int AppConstants::Max = 30;
const std::string AppConstants::Prefix = "myprefix";
Surtout dans le cas de la chaîne, cela a l'avantage de ne pas en construire une nouvelle à chaque fois que vous y accédez.
Il présente également l'inconvénient d'être affecté par l'ordre d'initialisation globale non spécifié de C++, donc soyez prudent si vous utilisez les constantes de l'initialisation d'autres variables/constantes globales.