Blackboard Building Block Полиморфизм или интерфейс?
Пожалуйста, поправьте меня, если я неправильно понимаю две концепции. Полиморфизм, по-видимому, представляет объект во многих формах, так что пользователь может быть базовым классом, а ученик или учитель - подклассом. Они по-прежнему относятся к типу user, но имеют свои собственные реализации. Интерфейс предоставляет схему взаимодействия с базовым классом из подкласса. Полиморфизм может использоваться в сочетании с интерфейсом и иногда может быть необходим.
С этим пониманием я создаю дополнение к существующей системе управления обучением. Он имеет свои собственные библиотеки для взаимодействия с различными объектами, такими как пользователи, оценки или информация о курсе. Некоторые объекты из библиотек соединяются с другими объектами из библиотеки для создания экземпляров или создания значений. Например, для получения информации об оценке необходим идентификационный номер курса. API для библиотек расплывчаты или отсутствуют. Полиморфизм и / или интерфейс облегчили бы использование этих библиотек в моем проекте, даже если я не очень уверен насчет API? Как будет выглядеть модульное тестирование с использованием полиморфизма и / или интерфейса в этом типе проекта? В целом, какова лучшая практика при разработке сторонних библиотек с плохой документацией?
2 ответа
Полиморфизм и / или интерфейс облегчили бы использование этих библиотек в моем проекте, даже если я не очень уверен насчет API?
Не совсем, документация по API и разработка API являются основными способами упрощения использования API. Использование API - это задача обучения, и документация походит на хороший урок или урок, в то время как улучшения в дизайне API походит на упрощение материала, который нужно изучить.
Как будет выглядеть модульное тестирование с использованием Polymorphisim и / или интерфейса в этом типе проекта?
По большей части модульное тестирование будет аналогичным в том смысле, что вы вызываете метод или несколько методов для объекта и проверяете результаты.
Используя Polymorphisim, вы в основном тестируете классы в нижней части дерева наследования, используя интерфейс, опять же вы в основном тестируете классы в нижней части дерева наследования. Это потому, что вы действительно не можете создать экземпляр абстрактного класса или интерфейса способом, который имеет смысл при модульном тестировании.
В целом, какова лучшая практика при разработке сторонних библиотек с плохой документацией?
В целом, лучшая практика заключается в написании небольших фрагментов кода, которые проверяют ваши предположения, а затем запускают их, чтобы проверить, верны ли ваши предположения о том, как, по вашему мнению, работает их библиотека.
Другие методы включают загрузку исходного кода библиотеки и его чтение, если оно доступно. Таким образом, написание модульных тестов для "проверки библиотеки" может быть полезным, но иногда библиотека не так хорошо структурирована, чтобы сделать это легко.
Иногда документация доступна другими способами, например, покупая книгу, которая знакомит вас с библиотекой. Иногда вы можете взять уроки "обучения" у продавца библиотеки. Иногда вы можете найти других людей, которые используют библиотеку, и задать им вопросы (это часто включает определенные группы пользователей библиотеки или списки рассылки). Иногда у вас есть доступ к системе отслеживания ошибок библиотеки и вы можете найти подробности в сообщениях об ошибках (или отклонениях в сообщениях об ошибках, которые указывают на правильный способ использования функции и т. Д.). Иногда вы можете найти другие проекты, использующие ту же библиотеку, и прочитать их исходный код, чтобы определить шаблоны использования, которые, кажется, работают.
Библиотеки обычно пишутся для использования, но не все так хороши в написании используемой библиотеки. Иногда авторы предоставляют информацию, а вы просто не знаете, где она находится, в других случаях авторам не хватает необходимой способности иметь другую точку зрения и никогда не показывают, как ее эффективно использовать. Как правило, библиотеки, которые слишком сложны в использовании, используются очень редко и в конечном итоге забываются и не используются.
API Blackboard Building Block предназначены для создания экземпляров и вызова методов для доступа к данным. Существуют случаи, когда расширение класса Blackboard имеет смысл, но в целом они просто существуют, чтобы предоставить вам доступ к данным.
В полном раскрытии я работаю на Blackboard и недавно присоединился к команде по документации, чтобы помочь продолжить создание раздела "Документация для разработчиков и ресурсы" по адресу https://help.blackboard.com/.
Существует ряд документов, доступных в разделе "Обучение"> "Администратор"> "Апрельская версия"> "Ресурсы разработчика". Мы также проводим часы работы разработчиков каждую среду в 11:00 по восточному поясному времени. Папка "Сообщество" в разделе "Ресурсы разработчика" предоставит вам информацию, необходимую для присоединения. Они свободны и открыты для всех.