Follow the Alternation-Non-Enumeration rule: Avoid enumerating the subclasses in abstract class names. Reason: Each time you add a subclass, your abstract class name becomes outdated. Example: AddClassOrAttribute is better renamed to: AddItem. AddClassOrAttribute : AddClass | AddAttribute . If we add AddMethod as a subclass, AddItem is still correct. AddItem : AddClass | AddAttribute | AddMethod.