Тип с «Менеджером» в названии - кандидат на рефакторинг? - PullRequest
3 голосов
/ 21 октября 2010

Я нашел диссертацию на форумах :

Если у вас есть тип с «Менеджер» в имя, это кандидат на рефакторинга.

Один ответ:

Я знаю, что это считается кодом "запах"

Так ... почему? Верен ли этот тезис?

Там много менеджеров. Например, Ogre3d часто их использует, и у этого движка действительно чистая архитектура.

Ответы [ 2 ]

3 голосов
/ 21 октября 2010

Ogre3d часто их использует, и этот движок действительно имеет чистую архитектуру.

Он применяется везде, кроме классов "manager".Посмотрите на DefaultSceneManager в качестве примера.Это невероятно огромные кошмарные классы, которыми можно «управлять».

Проблема в том, что большинство классов с именем, включающим «Менеджер», обычно нарушают Принцип единой ответственности .Это не всегда верно - поскольку класс может нести единоличную ответственность за управление одним другим аспектом, но обычно они будут именоваться по-другому.Когда класс получает имя «Менеджер», обычно это происходит потому, что этот класс наблюдает за всем - и действительно должен быть разбит на отдельные части в зависимости от их индивидуальных обязанностей.

0 голосов
/ 28 октября 2010

Менеджер, когда много делаешь - это запах. Если мы внимательно посмотрим на менеджера, что он делает, вы можете найти много вещей, которые делает служба. Разделение, разделение их и извлечение в различные службы имеет смысл.

Вы также можете найти некоторые классы SRP с именами с суффиксом Manager, например «ConnectionPoolManager». Это имеет смысл, если он делает то, что говорит.

...