> And if you add a new item in the enum set, how can you be so sure that every function that validates that attribute are refactored appropriately? You test, of course.<p>Or you use a language that has strong static types, so that you can find everywhere it's being used, get compile errors if switch statements are not exhaustive, etc.