Допустим, у меня есть классы, перечисленные ниже, которые используются для передачи данных клиента через веб-сервис (классы упрощены):Selective POCO свойства
public class Customer
{
public int CustomerId { get; set; }
public string Name { get; set; }
public List<Sales> CustomerSales
{
get { /*code to return list of customersales */ }
}
public double TotalSalesAmount
{
get { /*code that return total sales amount for customer*/ }
}
public double AverageSalesPerMonth
{
get { /*code that return average sales amount per month for customer*/ }
}
}
public class Sales
{
public int SalesId { get; set; }
public int CustomerId { get; set; }
public DateTime SalesDate { get; set; }
public double SalesAmount { get; set; }
}
У меня есть вопрос в отношении двух свойств:
public double TotalSalesAmount
{
get { /*code that return total sales amount for customer*/ }
}
public double AverageSalesPerMonth
{
get { /*code that return average sales amount per month for customer*/ }
}
иногда клиент только нужно будет только информация о клиенте, т.е. CustomerId и Имя, а затем иногда это потребует логотипо rId, Наименование и TotalSalesAmount или их комбинация и так далее. Какая была бы лучшая практика в этом отношении. Я обнаружил, было сделано несколько дискуссий по данной теме, а также следующие предложения:
- Создание DTO для каждого сценария (это означало бы, что я в конечном итоге с 100 в DTO это как пример упрощенной)
- Создать отдельный метод обслуживания для каждого метода вычислений и выполнения при необходимости (это будет означать, что будет сделано множество вызовов услуг)
- Оставьте свойства в классах, как указано выше (это будет означать много накладных расходов - некоторые вычисления могут быть очень ресурсоемкие - это не требуется)
Я уверен, что для этого нет серебряной пули, но хотелось бы знать, какой будет лучший подход?
из любопытства, почему немного сместить? Почему бы просто не задать TotalSalesAmount = 0 или AverageSalesPerMonth = 1 в вашем перечислении? Возможно, я ошибаюсь, но, похоже, это отвлекает от читаемости. –
@JamesShaw - это вопрос вкуса. ИМХО это выглядит лучше, когда у вас их много (1 << 17) является более читаемым, чем 131072. –
Очень хорошая точка! Я об этом не думал. –