Как моделировать приложения, используя только объявления (интерфейсы)? - PullRequest
2 голосов
/ 16 февраля 2011

Это то, что мне действительно нравится делать после того, как я немного подумал над проблемой.Так что просто создаем классы, перечисления, интерфейсы, структуры и т. Д. Для определения интерфейсов в смысле программирования.

Но при этом, очевидно, компилятор жалуется, потому что у меня есть методы и т. Д. Вокруг без кода внутри, поэтомуметоды, которые должны возвращать значения и т. д., помечены.

Теперь вы можете сказать, зачем тогда компилировать?Но для меня возможность компилировать и видеть, что ваш интерфейс компилируется, является важным шагом.Затем, когда вы будете удовлетворены, вы можете добавить отсутствующие реализации и протестировать свои изменения.

Итак, мой вопрос, вы это делаете?Если да, то как?

Как вы думаете, какие плюсы и минусы этого стиля?Также есть ли название для этого стиля программирования?

Обратите внимание, что, хотя это отличается от некоторых других наиболее часто используемых способов программирования (из того, что я видел), где программист начинает реализацию сразу и какему нужно больше типов и т. д., он добавляет их сразу или после.Но всегда идти вперед с реализациями.

Ответы [ 3 ]

2 голосов
/ 16 февраля 2011

Вы можете компилировать со всеми интерфейсами, без проблем.

Вы можете компилировать структуры и классы, которые используют автоматические свойства ({ get; set; }) и пустые методы void.

Методы с возвращаемыми значениями могутбыть скомпилированным, если они выдают исключение.Для этого бросьте NotImplementedException.Не требуется return операторов.

К моменту развертывания не должно быть никаких NotImplementedException с;любые члены, которые не имеют реализаций по проекту, должны вместо этого выбросить NotSupportedException.


почему?

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

Как только этот класс реализован с использованием только интерфейсов, я начинаю писать тесты и реализовывать интерфейсы, которые мне пришлосьнапишите, чтобы поддержать первый класс, затем повторяйте этот процесс, пока я не реализовал все.

1 голос
/ 16 февраля 2011

Это довольно легко сделать с помощью встроенного конструктора классов в VS.

При добавлении классов / методов / свойств / ... он генерирует компилируемые заглушки кода для всего.

Красивая картинка - бонус.

Это можно использовать при разработке (части) модели.Вы не хотите использовать это для слоев GUI или DAL.

1 голос
/ 16 февраля 2011

Это очень похоже на то, что обычно называют "издевательством".Единственное отличие состоит в том, что в mocking, класс mock создается специально для целей тестирования.Поддельный объект даже не пытается выполнять функции реального объекта.В некоторых случаях он просто содержит достаточно тела, чтобы код компилировался, чтобы вы могли поиграть с интерфейсом.Чаще всего он включает в себя некоторый тестовый код для проверки интерфейса (например, проверка соответствия требованиям реального интерфейса, даже если он ничего не делает со значениями).Просто для очень тривиального примера, фиктивная подпрограмма sqrt может просто проверить, что ее аргумент> = 0.0.

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