Существует тонкая причина, по которой это может быть нехорошо: иногда ответственность за нарушение чего-либо действительно должна лежать на человеке, который написал хрупкий код без автоматических тестов, а не на том, кто сломал свой код, сделав обязательное условие.- несвязанные изменения где-то еще.
Один пример, который можно себе представить, - это когда кто-то программирует на интерфейсе таким образом, который предполагает поведение, специфичное для реализации du jour, но не гарантированное существующими контрактами.Затем кто-то другой вносит изменения в реализацию, которая вписывается в контракт, но нарушает зависимый код.Никакие тесты не пройдены, потому что никакие тесты не написаны для зависимого кода.Кто на самом деле виноват?
Цель этого состоит не в том, чтобы обвинять людей, а в том, чтобы понять обязанности, и если "ты сломаешь это, ты купишь это", то это действительно хорошая политика.
РЕДАКТИРОВАТЬ: Я действительно плохо сформулировал это.Я имел в виду, что речь идет о том, как написать правильное программное обеспечение по отношению к зависимостям, включая скрытые зависимости.Я имел в виду, что это вопрос о том, что ответственность программиста состоит в том, чтобы избежать ошибок, а не в том, что делать, если обнаружена неожиданная ошибка.НО, поскольку уже было дано так много ответов, я оставлю вопрос в том виде, в каком он есть, и соответственно укажу ответ.