Я читаю книгу Фаулера по рефакторингу и немного запутался в этих двух запахах кода.
«Цепочки сообщений» - это вызовы типа a.getB (). GetC (). GetValue ()
.
«Посредник» - это такой метод, как
class A
{
object getCValue()
{
return b.getCValue();
}
}
Я понимаю, что два раздела таковы, что если у вас есть «Цепочки сообщений», вы сокращаете их, вводя «Посредников». А если у вас есть «Средние люди», вы превращаете их в «Цепочки сообщений» ...
Теперь очевидно, что здесь должно быть какое-то ограничение, иначе у вас будет карусель программиста. В какой момент мне следует отдать предпочтение одному перед другим?
Один связывает класс с несвязанными классами, другой связывает класс со структурой. Итак, теоретически мой подход состоял бы в том, чтобы проверить, уменьшает ли какое-либо конкретное изменение один вид связи больше, чем усиливает другой. Но разве один вид сцепления хуже и должен ли его весить больше? Т.е. добавляйте только одно соединение классов, если вы можете удалить структурные связи X?