«Цепочки сообщений» против «Среднего человека»

Я читаю книгу Фаулера по рефакторингу и немного запутался в этих двух запахах кода.

«Цепочки сообщений» - это вызовы типа a.getB (). GetC (). GetValue () .

«Посредник» - это такой метод, как

class A
{
    object getCValue()
    {
        return b.getCValue();
    }
}

Я понимаю, что два раздела таковы, что если у вас есть «Цепочки сообщений», вы сокращаете их, вводя «Посредников». А если у вас есть «Средние люди», вы превращаете их в «Цепочки сообщений» ...

Теперь очевидно, что здесь должно быть какое-то ограничение, иначе у вас будет карусель программиста. В какой момент мне следует отдать предпочтение одному перед другим?

Один связывает класс с несвязанными классами, другой связывает класс со структурой. Итак, теоретически мой подход состоял бы в том, чтобы проверить, уменьшает ли какое-либо конкретное изменение один вид связи больше, чем усиливает другой. Но разве один вид сцепления хуже и должен ли его весить больше? Т.е. добавляйте только одно соединение классов, если вы можете удалить структурные связи X?

15
задан TylerH 12 December 2018 в 18:43
поделиться