값. 특성 설정 기 또는 저장 메소드.가장 좋은 장소는 클래스 사진을 가정
편집 : 업데이트 방법은 무엇입니까? 사진이 PhotoManager.Add (사진 p)와 같은 방법을 사용하여 PhotoManager를 통해 추가 된 경우 유효성 검사를 수행하는 가장 좋은 장소입니다.
종류에 관해서, 그 경우
값. 특성 설정 기 또는 저장 메소드.가장 좋은 장소는 클래스 사진을 가정
편집 : 업데이트 방법은 무엇입니까? 사진이 PhotoManager.Add (사진 p)와 같은 방법을 사용하여 PhotoManager를 통해 추가 된 경우 유효성 검사를 수행하는 가장 좋은 장소입니다.
종류에 관해서, 그 경우
인스턴스가 유효하지 않은 상태에 빠지게하지 마십시오. 설정자에서 유효성 검사를 올바르게 수행하십시오.
내 설정자가 Exception을 throw하면 나쁘지 않습니다. –
예외를 발생시키는 경우 나중에 실패하는 대신 실패한 데이터를받을 때 예외를 throw하는 것이 좋습니다. – mquander
속성에서 예외를 throw하는 것이 일반적이지 않습니까? –
다음 속성 setter에서 유일한 옵션입니다. Separation of concerns은 Save
이 저축을해야한다고 지시하고 다른 것은 아닙니다.
또한 속성의 아름다움입니다. 필드처럼 보이지만, 뒷받침 필드의 값을 가져오고 설정하는 과정에서 향상된 논리를 가질 수 있습니다.
작은 세부 사항으로 말하기는 어렵습니다. 개체가 유효하지 않은 상태에서 유효하다고 생각되면 Save 메서드에서 유효성 검사를 수행해야합니다.
질문을 올바르게 이해하면 설정자 및 저장 방법 내에서 호출되는 private boolean Validate(title, fileExtension)
메서드를 사용하여 간단히 수행 할 수 있습니다. 유효성 검사가 거짓 인 경우 Exception
을 던져 거기에서 처리 할 수 있습니다.
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;
}
, 때 정확성을 확인하기에 충분한 데이터가 수행 FileExtension의 정확성에 의존하지 않는 경우를 Title의 값 및 Title의 정확성은 FileExtension의 값에 의존하지 않으므로 setter 내부에서 각각을 확인할 수 있습니다.
그러나 그 중 하나가 다른 값에 의존하고 설정자가 실행되는 순서가 무엇인지 모르는 경우 두 가지를 모두 가져올 때만 Title과 FileExtension을 확인해야합니다. Save 나 새로운 Check 메소드에있을 수 있습니다.
또한 저장하기 전에 제목과 FileExtenstion이 설정되었는지 확인해야합니다.
그래서, 요약하면 다음 사항을 확인해야합니다 :
의 업데이트 방법에 관해서는 : 실행 된 설정 당신이 제목 및 FileExtenstion 이미 설정으로 사진 객체를받을 수 있음을 이해 . 이 경우, 당신은 그 사람이 설정 한 사람이 사진에서 해당 제목과 FileExtension을 이미 확인했는지 여부를 결정해야합니다. 당신이 그것을 신뢰한다면 위의 제 제안에서 무엇이든 변경할 필요가 없습니다. 그러나 신뢰하지 않는다면, Save에서 Title의 정확성과 FileExtension의 정확성을 검사해야합니다 (또는 새로운 Check 메서드에서 다시).
"올바르게 설정"이란 의미는 무엇입니까? "올바르게"정의하십시오. –
올바르게 설정하면 개체에 잘못된 값을 설정하지 못하게합니다. 예를 들어 FileExtension의 경우 "null" –