I'm starting on a project that pulls data from and writes back to a legacy system database. I've started on the domain model and am trying to improve this design over past systems, so I'd like some feedback on this one.
This example is arbitrary, so no need for specific advice there, but let's say there's a table in the database called "WorkflowStep" that I'm writing a class for. There's a column in the table called "CurrentStatus" that defines what state the workflow is in. It's stored as a varchar. There are five distinct strings in the entire table for this column, and aren't likely to be changed...values like "Open," "Closed," "On Hold," and so on.
The class needs to track this value, but in what fashion? I could go the easy route and just store it in a string, but that's not very well-defined and I'd envision future developers hunting for distinct values of the string to apply logic against. I could go with an enum to make things more well-defined, but that could lead into switch/case hell all over the place. I've read approaches where engineers make an interface, say "IStatus," and then make concrete classes that represent each possible state of the status, but some other columns in the same situation as this one could have a hundred distinct values, so 100 classes for each state seems like overkill.
My main question: is one approach de-facto better than the others, and if not, what should I consider in order to choose an approach?
Note that the project is still in its infancy and I'm not sure exactly how this "status" attribute of the class will be used. It could be for nothing, or it could prove vital: I'm not sure yet.