2008-10-09 7 views
2

개체 데이터가 유효한 경우 테스트가 필요한 개체가 있습니다.유효성 검사를 메소드 또는 속성으로 구현 하시겠습니까?

{ 
    if (_step.Equals(string.Empty)) return false; 
    if (_type.Equals(string.Empty)) return false; 
    if (_setup.Equals(string.Empty)) return false; 
    return true; 
} 

속성으로이를 구현, 또는 방법 및 이유로 더 나은 다음과 같습니다 자체가 객체를 instatiated 스레드에서 호출 될 검증, 그것은 다음과 같습니다? related question에 대한 답변을 읽었지만이 특정 질문은 여기에 포함되어 있다고 생각하지 않습니다.

답변

7

여기에 내 개인적인 의견은 다음과 같습니다 :

  • 은 "유효성 검사"방법은 개체 변이합니다 경우

    if(something.IsValid) { ... 
    

    더 나은 또한

    if(something.IsValid()) { ... 
    

    MSDN에서 예를 들어 다음 보인다 어떤 방법 으로든 (당신의 예제는 그렇지 않다) 그것을 방법으로 만든다.

  • 유효성 검사 후에도 개체가 변경되지 않은 상태로 있으면 속성을 만듭니다.
1

코드에 리팩터링이 필요합니다. 이것은 C#이 아닌 Java로 코드를 작성하는 방법입니다. C#에서는 연산자 오버로딩이 발생했습니다.

if (_step == "")) return false; 
if (_type == "")) return false; 
if (_setup == "")) return false; 

이것은 비교를 수행하는 관용적 방법입니다. 당신의 방법은, 더 장황한 것 외에도, C#에서는 예상치 못하고 일관성이 없습니다.

및 경우에만, 경우, 이러한 문자열 대신 빈의 null가 실제로있는 대신 다음을 사용하는 기회가있다 : 나는 (이 같음을 사용하는 것이 좋습니다 것을 somwhere 읽은 기억

if (string.IsNullOrEmpty(_step)) return false; 
+0

을 .. .) 일부 CLR 특정 물건 때문에 C#에서도. 물론 나는 내가 *이 책을 읽은 것을 기억하지 못합니다 ... – Treb

+0

그래, 그런 말도 안되는 주장을하는 웹에 여러 기사가 있습니다 ("효과적인 C#"검색은 같은 제목의 좋은 책 외에도 여러 권을 나타냅니다). 그러나 그들은 반복적으로 폭로를 당했다. –

+0

나는 bool AreNulls (params object [] parameters)를 만들 것이다. 매우 일반적인 경우 이러한 사례를 처리하는 메서드입니다. – jop

관련 문제