Как называется этот анти-паттерн? Метод подписи лжеца - PullRequest
2 голосов
/ 31 марта 2011

Как называется антипаттерн, где методы берут общий объект-бог, у которого есть все свойства, которые могут понадобиться для метода, вместо того, чтобы явно указывать, что нужно методу?

Например:

public class BaseRequest
{
    User user;
    Car car;
    CustomerRecords customerRecords;
    Folder folder;
    // ... etc for 10 - 20 other unrelated parameters
}

public void doSomething(BaseRequest request)
{
    User user = request.getUser();
    // do stuff with user, ignore all other attributes of request
}

Вместо

public void doSomething(User user)
{
    // do stuff with user, since it's nice and clear what we want
}

Примечание. Я не имею в виду принцип единой ответственности, который нарушается BaseRequest.Вместо этого я ищу имя антипаттерна, в котором сигнатура метода «лежит» о его зависимостях.

Кроме того, есть ли хорошие посты в блоге, которые кратко объясняют порочность этого шаблона, что я могууказать кому-то?

Ответы [ 2 ]

7 голосов
/ 31 марта 2011

Закон Деметры нарушение

1 голос
/ 31 марта 2011

Я бы сказал, что это просто эффект наличия объекта бога . Проблема не должна существовать, когда объект бога не существует.

...