Design spørgsmål: En røvfuld enums og switch-case, eller...?
HejsaSom i mit tidligere spg. (http://www.eksperten.dk/spm/989961#reply_8108703)
Sidder jeg og laver mig en lille bysamfundssimulator, og er kommet lidt i tvivl om, hvad der giver mest mening/er mest overskueligt og vedligeholdbart.
Denne gang mht. Enums.
Jeg har f.eks. disse Enums:
public enum YesNo
{
Yes,
No,
Unknown
}
public enum BasicMaterialType : int
{
Stone,
Wood,
Organic,
Metal
}
public enum StoneType : int
{
Granite=0,
Flint
}
public enum WoodType : int
{
Oak = 0,
Pine
}
Og så har jeg lavet en lille klasse til at "slå op" om en given enum må bruges til en given opgave:
// this class defines allowed and disallowed options for ressource related enums
public static class RessourceEnum
{
public static YesNo IsProcessedRessource(BasicMaterialType materialtype)
{
switch (materialtype) {
case BasicMaterialType.Metal:
return YesNo.No;
case BasicMaterialType.Organic:
return YesNo.No;
case BasicMaterialType.Stone:
return YesNo.No;
case BasicMaterialType.Wood:
return YesNo.No;
default:
return YesNo.Unknown;
}
}
public static YesNo IsRawRessource(BasicMaterialType materialtype)
{
switch (materialtype) {
case BasicMaterialType.Metal:
return YesNo.Yes;
case BasicMaterialType.Organic:
return YesNo.Yes;
case BasicMaterialType.Stone:
return YesNo.Yes;
case BasicMaterialType.Wood:
return YesNo.Yes;
default:
return YesNo.Unknown;
}
}
}
Men det giver jo en frygtelig masse kode, og overblikket forsvinder hurtigt. Så hvad gør en klog? :)