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