2010-08-01 4 views
4

요즘 Fluent API는 매우 일반적입니다. 최근에 저는 거의 모든 시스템에서 작업하고 있습니다. 대체로 가독성을 높이기는하지만 때로는 유연하지 못한 사양으로 나를 고정 시켜서 거의 불가능한 사양의 런타임 동작을 이해하게 만듭니다. 우수한 유창한 API를 만드는 방법에 대한 합의가 이루어 졌습니까? 유창한 API를 사용하여 구조 또는 사양을 표현하는 가장 좋은 방법은 무엇입니까? C#의 새로운 스타일

는 I 최근 NServiceBus 구성 클래스 유동성 API에이 신규 한 변형을 발견 : 그것은 선형 유창한 인터페이스의 일종으로 다중 인터페이스를 사용

class EndpointConfig : IConfigureThisEndpoint, AsA_Server { } 

. 나는 단순한 요구 사항만을 나타낼 때 여분의 코드와 컨텍스트에 부담을주지 않기 때문에 좋아합니다. 간단한 경우에 충분합니다. 하지만 복잡한 사양으로 확장 될 것이라고는 생각하지 않습니다. 이 인터페이스 사용에 대해 어떻게 생각하십니까?

C#에서 사용하는 다른 새로운 숙어들은 무엇입니까? 어디에서 사용합니까? 그들의 강점은 무엇입니까? 너 어디서 사용하지 않니? 또한, 사용하려고 생각하고있는 관용구의 강점을 어떻게 측정 할 것입니까?

+6

최소한이 커뮤니티 위키를 만드십시오. – Joey

+1

왜? 이것은 모든 시간 동안 사실이 될 답변을 생성하지 않습니다 - 숙어가 바뀌므로, 왜 제가 업데이트를 요구하고 있습니까! –

답변

1

다른 동작을 나타내는 메소드에서 부울 매개 변수를 피하는 데 사용되었습니다. 나는

int ExpensiveComputation(bool useDiskCache)

을하고 ExpensiveComputation(true)를 호출 할 때, 그것은 분명하지 않다 때문에 true 모든 약을 모르고 무엇을 의미하는지 나는 대부분이 선호

int ExpensiveComputation(CacheType.DiskCache)

으로 바꿀 것을 선호 ExpensiveComputation 인 반면, ExpensiveComputation(CacheType.DiskCache)은 좋은 아이디어입니다.

그러나 명명 된 매개 변수를 사용하면 첫 번째 코드를 사용하고 다음과 같이 호출 할 수 있다는 것을 알게되었습니다. ExpensiveComputation(useDiskCache: true) 그래서 나는 나 자신을 위해 발명 한 최근 관용구입니다.

+0

니스. 유창한 접근법 (내가 추가하기를 서두르는 것은 당신이 제안하는 것보다 더 나쁩니다)은 이전 방법을 사용하지만 유창함을 제공하기 위해 매개 변수의 이름을 지정하는 것입니다 : ExpensiveCalculation (using : DiskCache); 이것이 어디서나 사용되는지 궁금합니다. –