Декларация API библиотек - PullRequest
1 голос
/ 11 апреля 2009

В настоящее время я пишу библиотеку-обертку на C #, которая оборачивает COM-объект, который имеет очень маленький и болезненный для использования API, и у меня есть небольшая проблема с беспорядком.

Это первый проект, в котором я использовал TDD и макет, так что извините, если это не является большой проблемой. Я дал копию своей библиотеки одному из моих коллег по работе, и первое, что он заметил, было большое количество интерфейсов, которые были в API.

Я объяснил ему, что, поскольку я выполнял модульное тестирование и макетирование, мне нужны интерфейсы, чтобы прекратить тестирование, касающееся COM-объекта, он вроде как понял, но это заставило меня задуматься, может быть, мой API немного загроможден, что затрудняет понимание .

У меня вопрос: если я пишу библиотеку-обертку, где каждый объект где-то касается COM API, каков наилучший способ обезопасить мой API и при этом иметь возможность тестировать код.

Должен ли я использовать абстрактные классы вместо интерфейсов для большинства вещей? или я должен просто спрятать интерфейсы, которые только по причинам насмешки, где-то в пространстве имен?

Ответы [ 2 ]

1 голос
/ 12 апреля 2009

Я не обнаружил, что наличие открытого API-интерфейса является чем-то большим, чем комментарий коллеге. Ваш коллега по достоинству оценит гибкость, с которой ваше приложение будет меняться по мере продвижения вперед гораздо дальше, чем «загроможденный» API.

Я бы не волновался об этом и продолжил бы твою жизнь.

Что касается насмешек, я определенно предпочитаю интерфейсы абстрактным классам. Чем больше вы углубитесь в это, тем больше вы будете писать составленных приложений вместо унаследованных . Это связано с тем, что вы хотите, чтобы ваши объекты были небольшими, а зависимостей было мало, чтобы тестирование не превратилось в большой беспорядок.

0 голосов
/ 11 апреля 2009

Если интерфейс существует только для насмешливых целей, я бы предложил сделать его внутренним. Затем вы можете применить InternalsVisibleToAttribute к вашей библиотеке-обертке, чтобы предоставить внутренние интерфейсы вашим тестам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...