2010-03-08 1 views
1

, 나는 대부분이 같은 스타일을 본 적이 :유창함 API 및 방법 - 체인 스타일 사용

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

가있는 점을 넣어 뒤에 추론 무엇입니까 줄의 시작 대신에이 같은 줄의 끝 :

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

또는, 단지 그것을 팀에 합의하게하는 스타일 일이?

답변

11

단순한 스타일 일뿐입니다.

퍼팅의 장점. 줄의 시작 부분에서 이것이 독립 실행 형 메서드 호출이 아니라는 것을 한눈에 알 수 있습니다. 당신이 할 경우 예를 들어

:

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

당신은 SetObjectParameter(...)이 방법은 그냥 라인을보고, 다른 객체에 호출되는 것을 알 수 있습니다. 다음 작업을 수행하십시오.

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

이전 줄을보고 말해야합니다. , 두 번째 줄을 보면,이 -하지만

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

가 (여기서, SetObjectParameter하지 CreateObject()에 의해 반환되는 유형의 현재 유형의 방법이 될 것이다 : 예를 들어,이 서식 문제, 즉 수 그 선을 시작하지 않으면 명백하지 않다.) 내가 생각할 수있는

+0

이 규칙은 Fluent 인터페이스에만 적용되는 것이 아니라 더 광범위하게 ** 모든 ** ** 메소드 체인 진술, Fluent 또는 기타에 적용됩니다. –

+0

예 - (내 답변에 "유창함"을 실제로 언급하지 않은 이유 중 일부입니다) –

+0

설명해 주셔서 감사합니다. 그에 따라 내 질문을 편집했습니다. –

5

세 가지 이유 :

  • 각 문은 이전의 연속 것이 더욱 명백하다.
  • Visual Studio의 IntelliSense가이 방법을 선호한다고 생각합니다.
  • 적어도 제 생각에는 눈에는 편합니다.
+3

+1 intellisense. IMHO 이것이이 대회의 주된 이유입니다. 방법은 점을 쓸 때 제안됩니다. 따라서 새 줄에이 메서드를 사용하려면이 줄에 도트가 있어야합니다. – ewernli