Switch-case w metodzie klasy i zwracanie zmiennej - które podejście jest lepsze?

0

Cześć, mam pytanie odnośnie co jest lepsze.

Mam metodę/funkcję w klasie, której jedynym zadaniem jest przyjęcie jako argument ID i następnie wykonanie działania w switch - case.
Wynik działania funkcji przekazuję później do kolejnej.
Zastanawiam się, które z rozwiązań jest najlepsze/najszybsze/najpoprawniejsze?

  string funkcja1(typ ID){
      string var {};
 
      switch(ID){
          case 1:
              var = "string1";
              break;
           case 2:
              var = "string2";
              break;
           ... 
       }
       
       return var;     
  }
  
  ...
  
  funkcja(funkcja1(ID));
  string var {}; //prywatne pole klasy
  
  ...
  
  void funkcja2(typ ID){
      switch(ID){
           case 1:
               var = "string1";
               break;
           case 2:
               var = "string2";
               break;
           ... 
       }     
  }
  
  ...
  
  funkcja(var);
2

Żadna z przedstawionych, jedna z:
1.

string funkcja1(typ ID)
  {
   ostringstream ss;
   ss<<"string"<<ID;
   return ss.str();
  }
string funkcja2(typ ID)
  {
   static const char *tb[]={ "tylko", "jeżeli", "wszystkie", "różne" };
   return tb[ID-1];
  }
0

Chyba nie do końca jasno się wyraziłem. Może troche jaśniej.

Mam enuma:

enum class Color{
	RED,
	BLUE,
	WHITE
}

i teraz chce sprawdzić jaki kolor został ustawiony używam do tego switch - case

string funkcja1(const ID_Color& id){
	string var {};
 
	switch(id){
		case ID_Color::RED:
			var = "czerwony";
			break;

		case ID_Color::BLUE:
			var = "niebieski";
			break;
			... 
		case ID_Color::WHITE:
			var = "biały";
			break;
			
			...
	}
 
	return var;     
}
 
...
 
funkcja(funkcja1(ID));
string var {}; //prywatne pole klasy

...

void funkcja2(const ID_Color& id){
	switch(id){
		case ID_Color::RED:
			var = "czerwony";
			break;
		case ID_Color::BLUE:
			var = "niebieski";
			break;
		case ID_Color::WHITE:
			var = "biały";
			break;
			
			...
	}
	
}

funkcja(var);
 

Bardziej miałem na myśli to, że jeśli muszę użyć switch - case to jak najlepiej zwracać wynik, jeśli to jest metoda w klasie, a następnie wynik tej metody,
jest potrzebny w kolejnej. Czy użycie pola klasy dostępnego globalnie w tej klasie jest lepsze? Czy wywoływanie metody jako argument innej metody i zwracanie za jej pomocą wyniku.

2

Zmapuj wartości i nazwy - http://ideone.com/lRO90Z

string funkcja2(ID_Color color){
    static const map<ID_Color, string> colorsMap = { 
        {ID_Color::RED, "czerwony"}, {ID_Color::BLUE, "niebieski"}, {ID_Color::WHITE, "biały"}
    };
    return colorsMap.at(color);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1