2009-07-14 5 views
4

처음 유창한 인터페이스를 만들려고하고 있는데, 다른 유능한 생각이 더 유창하고 어떤 것을 선호하는지 궁금합니다.구문이 더 길거나 짧은 경우 더 유창합니까?

Check.Field().Named("est").WithValueOf("sdsd").IsNotNull() 

Check.Field("est").WithValueOf("sdsd").IsNotNull() 

Check.Field("est").WithValue("sdsd").IsNotNull() 

건배 앤서니는 확실히

답변

4

마지막 하나

Check.Field("est").WithValue("sdsd").IsNotNull() 
3

나는 동의 : 가능한 한

Check.Field("est").WithValue("sdsd").IsNotNull() 

은 짧게, 여전히 감각을하면서.

.as. .of. .and. .in.과 같은 노이즈 단어는 문맥상의 의미를 추가하지 않는 한 피하십시오. 이 작업을 수행하는 유창한 인터페이스를 보았습니다. 더 많은 타이핑과 실행시 점프 할 애플리케이션에 대한 추가 작업을 제외하고는 아무 것도 쓸모가 없습니다.

0

또는 컬렉션의 일부, Item property의 사용을 모방하기 :

Check["est"].WithValue("sdsd").IsNotNull() 

일부는 그냥 .IsNull을 (사용)과 같이, 전체 표현식을 부정해야한다고 수도 있지만, 그건 "여섯입니다 대여섯 "일을 일등석 :

!Check["est"].WithValue("sdsd").IsNull() 
+2

나는 코드가 무엇을 하는지를 문자 그대로 읽을 수 있기 때문에 IsNotNull 메서드를 선호합니다. – SolutionYogi

+0

IsNotNull()이 부울을 반환하는지조차 확인할 수 없습니다. IsNotNull()은 더 필터링 할 수있는 콜렉션 (jQuery 스타일), ... IsNotNull(). IsVisible()을 반환 할 수 있습니다. . 또한, 이것은 VB에서 더 읽기가 쉽지 않습니다. - 'Check.filters ... IsNull()' – Kobi

+0

따라서 "주의할만한 말"이라고 쓰여 있습니다. :) (1) 메서드 이름은 유창한 인터페이스에서도 Boolean을 반환하는 규칙 인 "Is"로 시작합니다. 모든 것이 "this"를 반환 할 수있는 것은 아닙니다. (2) 원래 질문은 VB가 아닌 C#으로 태그되었으므로 "아니요"를 무시하고 "!"라고 언급했습니다. – lavinio

0

는 또 다른 옵션이 될 수 있습니다 그래서

Check.Field("est").IsNotNull("sdsd") 

LINQ의 FirstOrDefault와 같은 메싱은 필터링 대신 FirstOrDefault를 호출하여 술어를 호출합니다.

+1

나는 이것에 대해 생각했지만 누군가가 코드에 대해 모르고 "Check.Field ("est ")를 보았는지 여부는 분명하지 않다고 생각했습니다. IsNotNull ("sdsd ")"vs "Check.Field ("est ") .WithValue ("sdsd "). IsNotNull()"나는 후자가 더 명확 할 것이라고 생각했을 것이다. –

+0

글쎄, 코드를 모르는 사이에 나를 혼란스럽게하는 것은 "sdsd"값이있는 필드가 null 일 수 있습니다 ("null 값"을 의미하는 것으로 읽음). –

0

Check은 무엇입니까? 나는 그것이 전혀 필요 없다고 생각한다. 당신이하려고하는 것을 이해하지만, 작성하려고하는 표현은 여전히 ​​if 문으로 끝날 것입니다. 이를 염두에두고 "check X"가 읽는 방법에 대해 생각해보십시오. 너무 좋아, imho. 또한, 'Field'기능은 그 이름을 해결하기 위해 무엇을해야합니까? 더 좋은 방법으로 표현할 수있는 곳이 있습니까? (일부 기본 유형의 확장 메서드 일 수도 있습니다)

+0

사실 다음과 같은 경우가 있습니다 : 확인 및 검증. Check는 유효성 검사가 끝날 때 bool을 반환하는 예외를 throw합니다. 그래서 그것은 읽는 방법을 다음과 같이 생각했습니다 : public void Test (Object value) {Check.Argument ("value"). WithValue (value) .IsNotNull(); ....} 그리고 내 유효성 검사 경우는 다음과 같습니다 : public void Test (object value) {if (Validate.That ("value"). WithValue (value) .IsNotNull()) {...}} –

+0

방법. Check.Field & Check.Argument에는 실제로 두 가지 가능성이 있습니다. 차이점은 Check.Argument는 ArgumentNullException과 같은 예외를 throw합니다. Check.Field는 NullReferenceException을 발생시킵니다. –

관련 문제