Как придумывать осмысленные имена для классов?
Какое крутое признание, это действительно уникально что Вы понимаете, что в этом что-то не так. Большинство разработчиков что не сделают, все контроллером зовут. Я думаю, что нужно больше читать и развивать словарный запас, кругозор и сознание, даже не обязательно англоязычную литературу, научно-техническая лексика по большей части интернациональна. Читать можно конечно и статьи в научно-популярных журналах и художественную литературу, но мне ближе и я советую ученых, программистов и философов: Дональд Кнут, Гради Буч, Декарт, Кант, Марк Аврелий, Лао Цзы, Спиноза, Паскаль, Платон, Аристотель, Мамардашвили, Пятигорский, Шантидева, Рассел, Хомский, Норберт Винер, Глушков, Канторович, Лебедев, фон Берталанфи, Уильям Эшби, Дейкстра, извините, если кого не вспомнил, кто вот первый вдруг на ум пришел.
Если в словарном запасе только controller, manager, helper, receiver, adapter, то это и есть проблема.
Секрет наименования сущностей - в кратком описании их предназначения.
Класс Button вы ведь не назовёте MouseClickReceiver?