2009-03-02 5 views
1

값. 특성 설정 기 또는 저장 메소드.가장 좋은 장소는 클래스 사진을 가정

편집 : 업데이트 방법은 무엇입니까? 사진이 PhotoManager.Add (사진 p)와 같은 방법을 사용하여 PhotoManager를 통해 추가 된 경우 유효성 검사를 수행하는 가장 좋은 장소입니다.

종류에 관해서, 그 경우

+0

"올바르게 설정"이란 의미는 무엇입니까? "올바르게"정의하십시오. –

+0

올바르게 설정하면 개체에 잘못된 값을 설정하지 못하게합니다. 예를 들어 FileExtension의 경우 "null" –

답변

2

인스턴스가 유효하지 않은 상태에 빠지게하지 마십시오. 설정자에서 유효성 검사를 올바르게 수행하십시오.

+0

내 설정자가 Exception을 throw하면 나쁘지 않습니다. –

+0

예외를 발생시키는 경우 나중에 실패하는 대신 실패한 데이터를받을 때 예외를 throw하는 것이 좋습니다. – mquander

+0

속성에서 예외를 throw하는 것이 일반적이지 않습니까? –

2

다음 속성 setter에서 유일한 옵션입니다. Separation of concernsSave이 저축을해야한다고 지시하고 다른 것은 아닙니다.

또한 속성의 아름다움입니다. 필드처럼 보이지만, 뒷받침 필드의 값을 가져오고 설정하는 과정에서 향상된 논리를 가질 수 있습니다.

0

작은 세부 사항으로 말하기는 어렵습니다. 개체가 유효하지 않은 상태에서 유효하다고 생각되면 Save 메서드에서 유효성 검사를 수행해야합니다.

0

질문을 올바르게 이해하면 설정자 및 저장 방법 내에서 호출되는 private boolean Validate(title, fileExtension) 메서드를 사용하여 간단히 수행 할 수 있습니다. 유효성 검사가 거짓 인 경우 Exception을 던져 거기에서 처리 할 수 ​​있습니다.

0
public void Save() 
{ 
    try 
    { 
    // saving 
    } 
    catch(Exception ex) 
    { 
    MessageBox(ex.Message); // roughly 
    } 
} 

또는

public void Save() 
{ 
    if(!IsDataValid) // !(String.IsNullOrEmpty(this.Title) && String.IsNullOrEmpty(this.Extension)) 
    { 
    throw new Exception(); //in fact you need to throw something more concrete 
    } 
    // saving 
} 

또한 내가 사용할 수 있습니다

상황에 따라 다르다
public string Title { get; private set; } 

public string Extension { get; private set; } 

public Photo(string title, string extension) 
{ 
    this.Title = title; 
    this.Extension = extension; 
} 
1

, 때 정확성을 확인하기에 충분한 데이터가 수행 FileExtension의 정확성에 의존하지 않는 경우를 Title의 값 및 Title의 정확성은 FileExtension의 값에 의존하지 않으므로 setter 내부에서 각각을 확인할 수 있습니다.

그러나 그 중 하나가 다른 값에 의존하고 설정자가 실행되는 순서가 무엇인지 모르는 경우 두 가지를 모두 가져올 때만 Title과 FileExtension을 확인해야합니다. Save 나 새로운 Check 메소드에있을 수 있습니다.

또한 저장하기 전에 제목과 FileExtenstion이 설정되었는지 확인해야합니다.

그래서, 요약하면 다음 사항을 확인해야합니다 :

  • 확인 제목의 정확성 : Title.set에서
  • 확인 FileExtension의 정확성 : FileExtension.set
  • 에서
  • 확인하는 것이 Title.set 및 파일 확장자.저장에
  • 확인 제목 및 FileExtesion의 "공동 correcntess을": 저장

의 업데이트 방법에 관해서는 : 실행 된 설정 당신이 제목 및 FileExtenstion 이미 설정으로 사진 객체를받을 수 있음을 이해 . 이 경우, 당신은 그 사람이 설정 한 사람이 사진에서 해당 제목과 FileExtension을 이미 확인했는지 여부를 결정해야합니다. 당신이 그것을 신뢰한다면 위의 제 제안에서 무엇이든 변경할 필요가 없습니다. 그러나 신뢰하지 않는다면, Save에서 Title의 정확성과 FileExtension의 정확성을 검사해야합니다 (또는 새로운 Check 메서드에서 다시).

관련 문제