Нет.
Повторное использование является показателем хорошего дизайна. Это указывает на то, что соединение системы достаточно слабое, а сплоченность конкретного модуля достаточно высока, чтобы облегчить повторное использование без проблем с зависимостями или необходимости переписывать большую часть кода.
Возможность повторного использования в значительной степени иллюзия. Достоверно невозможно измерить «повторное использование» единицы, не зная заранее, где и как она будет использоваться. Многие разработчики попытаются спроектировать «повторно используемые» компоненты и позже узнают, что конкретные аспекты, которые они пытались сделать «гибкими», - это именно те, которые не должны были быть.
Я бы использовал другой «глянец»: тестируемость.
Сейчас я не сторонник TDD, и при этом я не чувствую необходимости проводить модульное тестирование всего и вся. Но написание тестов для компонента даст вам очень хорошее представление о его характеристиках сцепления / сцепления и очень быстро. Если это зависит от абстракций, то это слабая связь; вам будет легко смоделировать зависимости, и это предполагает хороший дизайн. Если у него есть четкая цель (см. Также принцип единой ответственности ), то его поведение будет относительно интуитивно понятным, вам будет легко выяснить, что тестировать, что опять-таки предполагает хороший дизайн.
Это, конечно, не гарантирует хороший дизайн; фактическая реализация или даже вся архитектура может быть совершенно неуместной для заявленной цели. Но, по крайней мере, он говорит вам, что вы не работаете со спагетти-кодом или объектами Бога.
Пожалуйста, не пытайтесь делать дикие предположения относительно «повторного использования» компонента, особенно не использовать его в качестве доказательства «хорошего дизайна». Это то, что вы можете установить только задним числом, когда оно действительно будет повторно использовано, и к тому времени дизайн может значительно измениться.