2009-04-02 3 views

답변

18

단일 입장 지점과 단일 이탈 지점이 있어야한다는 생각이 있습니다. 더 많은 정보가 있으면 코드를 명확하게 리팩터링해야합니다.

가 그래도 난 그 생각에 가입, 자주 같이, 가드 조항을 사용하지 마십시오

public void DoSomethingOnMales(Person p) 
{ 
    if (p.Sex != Sex.Male) 
     return; 
    .... 
} 

물론, 당신은 여전히 ​​너무 많은으로, 반환의 수를 제한하려고한다, 나쁜 것은 아니지만, 복잡한 방법을 가지고 있고 아마도 그것을 단순화하려고 노력해야한다는 좋은 징조입니다.

+0

좋은 어림셈, 그래서 +1. 필자의 의견으로는 함수의 끝에서의 리턴은 단지 디폴트 케이스 일 뿐이며, 함수의 타입에 따라 조기 리턴은 에러 (가드 조건 에서처럼)이거나 초기 성공이다. 뭔가 검색). – OregonGhost

1

언제든지 반환 할 수 있으며, 방법의 마지막에있을 필요는 없습니다. 주의해야 할 유일한 것은 도달 할 수없는 코드가 없다는 것입니다. 코드에 도달하기 전에 항상 리턴하기 때문에 도달하지 못할 코드입니다.

자신이 혼란스러워하고 실수를 저지르고, 방법이 끝나기 전에 돌아가서 걱정하지 않으려면 피하십시오. 그러나 유용 할 수 있기 때문에 원할 때 어디에서든지 return 문을 사용하는 것을 주저하지 않습니다.

+1

현대 컴파일러를 사용하면 컴파일러에서 (적어도 C# 컴파일러에서) 알 수 있기 때문에 연결할 수없는 코드가 있는지 걱정할 필요가 없습니다. – OregonGhost

+0

Resharper는 중첩 이상의 여러 수익을 선호하는 것으로 보입니다. 예를 들어 값을 반환하는 IF 문 또는 null이 반환되는 경우 null이 반환됩니다. 그 값으로 IF 문 밖에서 또 다른 반환 –

관련 문제