A good and useful design reflects also _what_ it does. It should avoid using technical names like _*Controller_, _*Handler_, _*Manager_, _*Service_ etc. because they mostly repeat the same technical semantics which doesn't tell you anything about the domain/business case.