2009-07-02 5 views
1

Ruby에서 몇 가지를 구현하고 있는데 오류 검사가 얼마나 적절한 지 궁금 해서요 (정확하게 말하면 규칙에 따라 오류 검사를 얼마나 많이 수행해야하는지 궁금합니다).루비 얼마나 많은 오류 검사가 적절합니까?

예를 들어 배열의 두 요소를 서로 바꿔주는 메소드를 구현하고 있습니다. 방법은 매우 간단합니다 :

def swap(a,b) 
    @array[a], @array[b] = @array[b], @array[a] 
end 

정말 간단하지만, 주어진 인덱스가 유효한지 여부를 확인하는 것이 루비 틱, 또는 마음에 불필요한 오버 헤드 (베어링 내가하는 방법에 대한 의도가 없다는 것입니다 -1과 같은 랩 어라운드 값으로 작업 할 수 있습니까?

답변

3

나는 부정적인 인덱스와 함께 당신을 도울 수는 없지만, a 유효하지 않은 인덱스의 경우에는 예외를 발생하는

@array.fetch(a) 

를 사용할 수 있습니다.

잘못된 색인을 "일어날 수없는"사례로 간주 할 때 fetch을 사용해야하지만 때로는 "행복한 경로"시나리오에 대해서만 생각합니다.

0

당신이 찾고있는 행동에 따라 다릅니다. 호출중인 Array#[] 메서드는 존재하지 않는 인덱스를 사용하는 경우 해당 검사를 수행하고 nil을 반환하므로 표준 동작을 원할 경우 오류 검사를 복제 할 필요가 없습니다. 다른 것을 원할 경우 원하는 동작을 구현해야합니다.

그러나이 방법은 입니다. 색인이 -1 인 경우이 작동하므로, 허용하지 않으려면 해당 검사를 수행해야합니다.

기본적으로 좋은 규칙은 다음과 같습니다. 메소드가 올바르게 작동하지 않는 조건을 확인하고 원하는 동작을 구현하십시오. 범위를 벗어나는 인덱스 조건은 배열에 의해 캐치되어 특정 방식으로 처리됩니다. 처리가 맞으면 아무 것도 할 필요가 없습니다. 메서드에 대한 일부 사용자 지정 기대치와 일치하지 않는 인덱스는 전혀 잡히지 않으므로 반드시 확인해야합니다.