Yes its a code smell. If you have empty classes with no logic, then it suggests that somewhere in your code you have conditional logic which checks what class an instance is. eg. if(x is Dog) then y Also it might suggest that you have an ever increasing number of empty classes, Cat, Dog, Cow, Sheep etc etc These kind of things should normally be replaced by an enum or string "Type" property on the parent object. Of course I need to add the usual caveat. "code smell" != bad code. Its just something that is seen often in conjunction with bad code.