Po moim ostatnio założonym temacie uzyskałem fachową(za którą dziękuję) odpowiedź więc myślę, że to miejsce będzie dobre na zadanie kolejnego pytania. Czy jak używam typów wyliczeniowych w swoich programach zyskuje cokolwiek poza czytelnością kodu? Czy istnieje jakakolwiek przewaga tego
switch(figura)
{
case TROJKAT:
break;
case KWADRAT:
break;
default:
break;
}
nad tym
switch(figura)
{
case 1:
break;
case 2:
break;
default:
break;
}
Oczywiście to tylko taki oderwany od rzeczywistości przkładzik.
Czytelność i mniejsza podatność na błędy to najważniejsze sprawy. Podałeś krótki i prosty przykład - ale pomyśl, jakby to było z 20 elementami? W językach nie mających takich możliwości trzeba sobie jakoś radzić (ważne są komentarze), ale jeśli masz możliwość pisania czytelniej , to czemu nie?
Weź pod uwagę to, że często po latach inny programista zagląda do danego kodu i musi coś w niem zmienić/poprawić. Dzięki stałym i typom wyliczeniowym ma ułatwione zadanie. Nie wspominając już o zbiorowym tworzeniu kodu.
Częściowo już Pablo_Wawa odpowiedział na pytanie, tylko nie wskazał konkretnie w czym jest przewaga oprócz czytelności.
Wyobraź sobie że rok po napisaniu kodu obsługującego kolo i kwadrat musisz dodać jeszcze romb, więc jeżeli użyłeś 1 i 2 to musisz prześledzić cały kod aby sprawdzić czy przypadkiem rok temu oprócz kwadrata i trójkąta nie dodałeś obsługę np kola i/lub trapezu, potem w zależności od wyniku przydzielić dla rombu kolejną liczbę.
A przypadku enum zwyczajnie dodajesz kolejną wartość ROMB i w odpowiednich miejscach obsługę tego przypadku. Czyli ułatwiasz rozwój kodu.