Используя принципы SOA по OOD в неслужебном коде

Наш архитектор говорил об использовании методов SOA всюду по нашей кодовой базе, даже в интерфейсах, которые на самом деле не размещаются как услуга. Один из его запросов - то, что мы разрабатываем наши методы интерфейса так, чтобы мы не делали предположений о фактической реализации. Таким образом, если у нас есть метод, который берет в объекте и потребностях обновить свойство на том объекте, мы, explictly должен возвратить объект из метода. Иначе мы полагались бы на то, что Что-то - ссылочный тип, и c# позволяет нам обновлять свойства на ссылочном типе по умолчанию.

Так:

public void SaveSomething(Something something)
{
  //save to database

  something.SomethingID = 42;
}

становится:

public Something SaveSomething(Something something)
{
  //save to database

  return new Something
  {
    //all properties here including new primary key from db
  };
}

Я не могу действительно получить голову вокруг преимуществ этого подхода и задавался вопросом, мог ли кто-либо помочь?

Действительно ли это - общий подход?

6
задан Georgia Brown 12 April 2010 в 12:54
поделиться

1 ответ

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

Что вам нужно сделать, так это познакомиться с функциональным программированием и подготовиться к разговору о подобных случаях с вашим архитектором. Помните, что его/ее намерения, скорее всего, благие, но конкретные случаи - это ВАША область. В данном случае побочный эффект является сутью , и вы, скорее всего, захотите вернуть тип bool, чтобы указать на успех, но возвращать новый тип не имеет смысла.

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

Несколько ресурсов по FP:

  1. Отличный учебник по функциональному программированию
  2. Википедия. программированию
  3. Статья в Википедии о функциональном программировании

Удачи, надеюсь, это поможет.

1
ответ дан 17 December 2019 в 22:11
поделиться