공개 메소드에서 가장 먼저하는 일은 모든 단일 매개 변수를 사용하기 전에 유효성을 검사하고, 전달하거나 참조하고, 그 중 하나가 계약을 위반하는 경우 예외를 throw하는 것입니다. 이에매개 변수 유효성 검사가 중복으로 간주 될 수있는 경우가 있습니까?
private List<Item> m_items = ...;
public Item GetItemByIdx(int idx)
{
if((idx < 0) || (idx >= m_items.Count))
{
throw new ArgumentOutOfRangeException("idx", "Invalid index");
}
return m_items[ idx ];
}
: 나는 당신이 가해자에게 위반이 커밋되는 순간을 잡을 수 있습니다으로 이것은 매우 좋은 방법으로하지만, 매우 자주 나는 이와 같은 매우 간단한 게터/인덱서를 쓰기 발견했습니다 index 매개 변수가 목록의 색인과 직접 관련이 있고 목록 자체가 정확히 동일하게 수행되며 동일한 예외가 throw된다는 사실 (예 : 설명서)을 알고 있습니다. 이 인증을 제거해야합니까, 아니면 더 잘 두어야합니까?
저는 여러분들이 생각하는 것을 알고 싶었습니다. 이제 저는 큰 프로젝트를 리팩터링하는 중이고, 위와 같은 많은 경우를 발견했습니다.
미리 감사드립니다.
파일 열기 작업이 실패 할 수있는 또 다른 이유 중 하나는 파일이 존재하지 않는다는 것입니다. 위험은 낮지 만 다른 사용자 나 프로세스가이를 삭제하여 검사의 무의미 함을 더할 수 있습니다. 나는 그 검사가 무의미하고 안전에 대한 잘못된 인식을 제공한다는 것에 동의한다. 시도/포착하는 것이 좋습니다. – BlackWasp
... 즉, 파일을 검사하고 파일을 여는 사이에 파일을 삭제합니다. – BlackWasp
그건 내가 동시성과 관련된 것들 중 하나입니다. –