Я предлагаю выбрать перечисление, если есть только ортогональные значения - например, именованные цвета являются примером, который может оправдать создание большого перечисления. Вопрос в том, являются ли ваши 300+ значений ортогональными - можете ли вы разложить его на меньшие ортогональные множества? Например, восемь углов куба можно описать перечислением с восемью значениями.
FrontLeftBottom
FrontRightBottom
FrontRightTop
FrontLeftTop
RearLeftBottom
[...]
Но вы также можете разложить его только на шесть значений и объединить их, используя перечисление битового флага.
Front
Rear
Left
Right
Top
Bottom
Если пространство значений не является фиксированным - то есть вполне возможно, что будут добавлены новые значения - строка или новый детектированный тип - путь.