Om man ska använda sig av konstanter i koden ska man använda sig av enum eller const? Jag har hört något om att enum är bättre. Stämmer det?
Enum eller Const?
4 svar · 319 visningar · startad av Lilly
enum är ju en form av konstant iof, men de har olika användningsområden, vad ska du ha den till?
Jag fick höra av någon att man bör välja enum framför const när man skapar konstanter i sin kod. Jag missade dock att fråga varför man skulle göra det :) Jag har dock googlat lite och i slutsatserna i denna artikel står det (http://www.codeproject.com/cpp/enumvsconst.asp)
"Using enum's rather than const's helps the compiler find places in your code where you've made incorrect assumptions."
Något likande hittar man även i denna artikel. Se sektionen "Enumerations vs. Constants"
http://aspnet.4guysfromrolla.com/articles/042804-1.aspx
Jag har dock bara skummat snabbt artiklarna men vad tror ni?
Har aldrig någonsin tänk i dessa banor.
Enums använder jag när jag vill kunna göra vilkorssatser eller beskriva något.
Type: Status. Här använder jag en enum för att kunna ge min instans olika status. Typ: Active, InActive, Deleted, New, Updated osv osv.. skulle aldrig få för mig att använda constanter till detta.
Constanter använder jag när jag har något som skall finnas på många ställen ikoden men som inte skall ändras. Typ på det är kanske texter, eller momssatser, eller någon variable, kanske en valutakurs, eller om du skapar en formel, och i denna formel så vill du ha en konstant som kan påverkar resultatet. Säg att det är 45,6% chans att det händer en sak i ditt program, då är det en ypperlig kandidat för en constant.
Eftersom enumerations inte kan ha värdet string, så är även detta en ypperligkandidat för const... Säg felmeddelande:
private const string ERROR_MESSAGE = "Det har inträffat ett allvarligt fel, var vänlig och försök igen";
Här kan man nu använda ERROR_MESSAGE på många ställen i din kod, men behöver endast ändra på ett ställe om du vill ändra felmeddelande, nu bör ju sådant ligga i conffiler istället, men du förstår nog iden...
- M