Ответы пользователя по тегу Проектирование программного обеспечения
  • Как тестировать бизнес-логику верхнего уровня?

    @maltsever
    Привет! Если нужно оттестить всю последовательность вместе (пункты 1-4), то я бы использовал функциональные тесты, а не модульные. Они как раз и нужны для того, чтобы тестировать как работает фича в целом.
    Ответ написан
    Комментировать
  • К какому слою относится Repository и как возвращать Business object?

    @maltsever
    Привет! Многое зависит от деталей и количества абстракций. Попытаюсь ответить как это должно выглядеть в самом общем случае. UserRepository использует напрямую доступ к базе данных (это может быть raw sql, какая-то ORM, неважно). Поэтому логично, чтобы он находился в Data Access Layer. Он поэтому так и называется, потому что на практике их может быть несколько: SqlDataAccessLayer, MongoDbDataAccessLayer и т.д. Также если мы говорим про ООП, то интерфейс IUserRepository должен хранится именно там, где планируется его использование. В нашем случае это BLL, он же Domain Layer. Не всегда удаётся придерживаться этого правила с интерфейсом, но к этому нужно стремиться.
    По поводу того, что должен возвращать UserRepository: на самом деле без разницы. Смотря от ситуации мы можем либо возвращать просто контейнер c необходимыми данными (DTO), либо полноценного User'a. Если говорить о зависимостях, то главное понимать, что в общем случае наш Domain Layer не должен иметь зависимостей от каких-то других слоёв. А вот остальные части нашего проекта (например, DAL) могут использовать Domain Layer.
    Ответ написан
    2 комментария
  • Как правильно вынести модели WebApi в отдельный проект для повторного использования в Xamarin?

    @maltsever
    Если не секрет, то почему нельзя поместить всё в одно решение? Как альтернатива, можно использовать один гит репозиторий, внутри которого будут два решения. Каждое из решений будет ссылаться на один и тот же проект Data. Это не так элегантно, но будет работать.
    Ответ написан
    Комментировать