Как определить связь?
Начните с этой heuristi c: если изменение здесь требует, чтобы вы также сделали изменение там, тогда у вас есть связь между ними.
Связывание само по себе не обязательно плохо: у меня есть много десятилетнего кода, который тесно связан с библиотекой коллекций java, и этот код отлично, Меня не обжигают, потому что то, с чем я связан, является стабильным .
Быть тесно связанным с неустойчивыми вещами - это жалкое существование.
Когда нестабильная вещь - это наш собственный код, иногда мы можем решить проблему, изменив нашу конструкцию, так что точка соединения становится стабильной, а не нестабильной.
В широком смысле «то, что он подразумевает под ...», создание стабильного контракта между испытуемым и испытуемым. Испытуемый должен выполнить контракт, но этот контракт описывает поведение (то, что вы видите снаружи черного ящика), а не реализацию.
Если вместо того, чтобы начинать с «Мне нужен FooClass и, следовательно, FooTest», вы начинаете с "Мне нужно FooBehavior и, следовательно, FooTest"; тогда вы намного ближе к цели, чтобы иметь детектор ошибок, который вы можете использовать без изменений , пока вы выполняете итерацию реализации этого поведения.
С другой стороны, когда само поведение нестабильно, это не поможет. В этом случае вам понадобятся другие методы. См. Речь Рича Хичи Spe c -уляция , где он говорит о силе аккреции.