流畅的API和方法链接样式用法

Chr*_*yer 2 c# coding-style fluent-interface method-chaining

当使用流畅的API编程或只使用方法链接时,我看到的风格大多是这样的:

var obj = objectFactory.CreateObject()
    .SetObjectParameter(paramName, value)
    .SetObjectParameter(paramName, value)
    .DoSomeTransformation();
Run Code Online (Sandbox Code Playgroud)

将点放在行的开头而不是行的末尾的原因是什么:

var obj = objectFactory.CreateObject().
    SetObjectParameter(paramName, value).
    SetObjectParameter(paramName, value).
    DoSomeTransformation();
Run Code Online (Sandbox Code Playgroud)

或者,这只是团队达成共识的风格吗?

Ree*_*sey 13

这只是一种风格.

放的好处.在行的开头是,它使得它更清晰,快速一瞥,这不是一个独立的方法调用.

例如,如果你这样做:

var obj = objectFactory.CreateObject()
    .SetObjectParameter(paramName, value)
Run Code Online (Sandbox Code Playgroud)

你可以知道这SetObjectParameter(...)是一个在其他对象上调用的方法,只是查看该行.这样做:

var obj = objectFactory.CreateObject().
    SetObjectParameter(paramName, value)
Run Code Online (Sandbox Code Playgroud)

要求您查看上一行告诉.例如,这可能是格式化问题,即:

var obj = objectFactory.CreateObject();
    SetObjectParameter(paramName, value);
Run Code Online (Sandbox Code Playgroud)

(这里,SetObjectParameter将是当前类型的方法,而不是返回的类型CreateObject()- 但是,通过查看第二行,如果没有.开头那条线,这是不明显的).


ric*_*eym 5

我能想到的三个原因:

  • 更明显的是,每个语句都是前一个语句的延续.
  • 我发现Visual Studio的intellisense更喜欢这种方式.
  • 至少在我看来,这在眼睛上更容易.

  • 智力感知+1.恕我直言,这是这一惯例的主要原因.写点时建议使用方法.因此,如果您想在新行上使用该方法,则点也需要在此行上. (3认同)