Мы работаем над проектом, где будет общая конфигурация, к которой необходимо получить доступ несколькими частями решения.Насколько сложными должны быть интерфейсы?
Команда, ответственная за модуль Config, реализовала интерфейс, который состоит только из 2 классов. 2 класса, которые отвечают за получение, кеширование и предоставление определенных значений (через свойства).
Я считаю, что это плохой дизайн, на мой взгляд, было бы лучше определить все значения конфигурации, которые можно получить через интерфейс, но не фактические классы, реализующие это поведение.
На мой взгляд, для чего-то вроде получения значений конфигурации было бы логичнее дать интерфейс, который показывает мне, какие значения я могу получить, но не класс (какая реализация, например, свойства не контролируются интерфейс).
-edit- Интерфейс выглядит следующим образом:
public interface IConfigurationResolver
{
GeneralConfiguration GetGeneralConfiguration(string Id);
SpecificConfiguration GetSpecificConfiguration(string Id);
}
Он реализован одним классом. Я имел в виду, что эти интерфейсы действительно просто определяют два класса, каждый из которых несет ответственность за предоставление значений конфигурации, тогда как я думаю, было бы лучше, если бы интерфейс не заботился о таких деталях и должен сам представлять значения конфигурации.
Эти очень опытные разработчики, а я нет, так какова ваша позиция на этом?
Это почти невозможно прокомментировать это без более широкого понимания приложения: размер, функция, жизненный цикл и т. Д. Все эти факторы могут повлиять на то, что считается лучшей практикой. Поддержание работоспособности менее важно для продукта с коротким жизненным циклом, чем долгосрочный, например. Усилия разработчиков будут лучше потрачены на вещи, отличные от классов конфигурации. – Khior
Конфигурация на самом деле очень важна в этом проекте. Это веб-приложение, которое будет работать как минимум на 5 лет (возможно, намного дольше). Это позволит пользователю работать с разными (но очень похожими) системами. Этим системам потребуется множество параметров и формуляров, которые варьируются от системы к системе и могут со временем меняться. Извините, я не могу сказать, что именно мы здесь говорим – buddybubble