2014-10-16 3 views
2

우리 회사는 VB.net으로 작성된 소프트웨어를 가지고 있습니다.변수가 값과 같은지 확인한 다음 해당 값을 중복해서 반환합니까?

If x Is Nothing Then Return Nothing ' x's type should be an instance of a class 
    Return x 

이에 해당하는 일을 할 것 같다 :

if(x == null) //Object.ReferenceEquals() if you want to be more accurate/verbose? 
    return null; 
return x; 

이 매우 중복 보인다 나는 다음과 같은 발생했습니다. VB에서이 작업을 수행 할만한 이유가 있습니까?

+1

거기에 'If'문을 사용할 이유가 없습니다. 단순히'x'를 체크하지 않고 반환하는 것은 C#에서와 똑같은 결과를 가져야합니다. 나는 누군가가 지나치게 조심스러워하고 있다는 것을 실제로 제대로 이해하지 못하고 있다고 생각한다. – jmcilhinney

+1

이 소프트웨어를 개발하는 사람은 여전히 ​​회사에서 근무하고 있습니까? 만약 아니라면, 아마도 이것은 이유입니다. : D – Baby

답변

1

은 코드 누적이 될 수 있습니다. 코드를 수정하는 것이 최소한의 변화 만있을 때 일어나는 일입니다. 적절하게 다시 엔지니어링하는 것이 아닙니다. 예를 들어

, 그것은 과거에되었을 수도 있습니다 :

If x is Nothing Then 
    Return 0 
End If 
Return x 

아마도 발신자가 nothing를 처리 할 수 ​​있기 때문이다.

이렇게 변경하면 일 수 있으므로 기능이 최소한으로 변경되었습니다.

이것은 때때로 변경을 최소화하기위한 필드 버그 수정 중에 취해진 접근법으로 더 많은 피해를 입힐 수 있지만 앞으로 "전체"변경을 제안하는 의견은 적어도 기대할 것입니다.

어쨌든 '이유'는 대체로 부적절합니다. if 문을 안전하게 제거 할 수 있습니다.

+0

고마워요. 나는 이것이 VB.net의 일종의 'gotcha'가 아닌지 확인하기를 원했습니다. – Casey

관련 문제