È una cattiva pratica definire costanti usando i metodi statici di classe?

5

Invece di usare #define o const, di solito definisco le costanti usando i metodi statici di classe come segue:

//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";
}

Lo faccio solitamente durante la creazione di un'app mobile, che mi piacerebbe salvare il tempo di compilazione ogni volta che cambio il valore per il test. È una cattiva pratica?

    
posta ggrr 29.06.2017 - 09:28
fonte

1 risposta

8

Sì, ed è anche inutile. Puoi dichiarare le costanti nelle intestazioni e definirle nei file sorgente proprio come le funzioni:

class AppConstants {
public:
  static const int Max;
  static const std::string Prefix;
};

const int AppConstants::Max = 30;
const std::string AppConstants::Prefix = "myprefix";

Soprattutto nel caso della stringa, questo ha il vantaggio di non costruirne uno nuovo ogni volta che lo si accede.

Ha anche lo svantaggio di essere influenzato dall'ordine di inizializzazione globale non specificato di C ++, quindi fai attenzione se usi le costanti dall'inizializzazione di altre variabili / costanti globali.

    
risposta data 29.06.2017 - 09:54
fonte

Leggi altre domande sui tag