Свободное использование API и стиля цепочки методов - PullRequest
2 голосов
/ 08 марта 2010

При программировании с использованием свободного API или просто с использованием цепочки методов, я видел стиль, в основном такой:

var obj = objectFactory.CreateObject()
    .SetObjectParameter(paramName, value)
    .SetObjectParameter(paramName, value)
    .DoSomeTransformation();

Какова причина, по которой точка ставится в начале линии, а не в конце линии следующим образом:

var obj = objectFactory.CreateObject().
    SetObjectParameter(paramName, value).
    SetObjectParameter(paramName, value).
    DoSomeTransformation();

Или это просто стиль, с которым команда приходит к консенсусу?

Ответы [ 2 ]

13 голосов
/ 08 марта 2010

Это просто стиль.

Преимущество сдачи. в начале строки сразу видно, что это не отдельный вызов метода.

Например, если вы делаете:

var obj = objectFactory.CreateObject()
    .SetObjectParameter(paramName, value)

Вы можете сказать, что SetObjectParameter(...) - это метод, вызываемый для какого-то другого объекта, просто смотрящий на эту строку. Делаем это:

var obj = objectFactory.CreateObject().
    SetObjectParameter(paramName, value)

Требуется, чтобы вы посмотрели на предыдущую строку, чтобы сказать. Например, это может быть проблема с форматированием, например:

var obj = objectFactory.CreateObject();
    SetObjectParameter(paramName, value);

(Здесь SetObjectParameter будет методом для текущего типа, а не для типа, возвращаемого CreateObject() - но, глядя на вторую строку, это не очевидно без начала. Этой строки). 1017 *

5 голосов
/ 08 марта 2010

Три причины, о которых я могу думать:

  • Более очевидно, что каждое утверждение является продолжением предыдущего.
  • Я считаю, что IntelliSense в Visual Studio предпочитает его таким образом.
  • На первый взгляд легче, по крайней мере, на мой взгляд.
...