가능한 중복 : 동료 프로그래머가 왜 우리가 항상하는 방법의 끝에 돌려달라고
Should a function have only one return statement?는 왜 좋은 연습 방법의 끝에서 반환하는 것입니다
?
우리는 둘 다 항상 메소드에 하나의 return 문만 있고 코드 전체에 여러 개의 흩어져 있지 않도록 가르쳐야했습니다.
정당한 이유가 있습니까?
가능한 중복 : 동료 프로그래머가 왜 우리가 항상하는 방법의 끝에 돌려달라고
Should a function have only one return statement?는 왜 좋은 연습 방법의 끝에서 반환하는 것입니다
?
우리는 둘 다 항상 메소드에 하나의 return 문만 있고 코드 전체에 여러 개의 흩어져 있지 않도록 가르쳐야했습니다.
정당한 이유가 있습니까?
단일 입장 지점과 단일 이탈 지점이 있어야한다는 생각이 있습니다. 더 많은 정보가 있으면 코드를 명확하게 리팩터링해야합니다.
가 그래도 난 그 생각에 가입, 자주 같이, 가드 조항을 사용하지 마십시오
public void DoSomethingOnMales(Person p)
{
if (p.Sex != Sex.Male)
return;
....
}
물론, 당신은 여전히 너무 많은으로, 반환의 수를 제한하려고한다, 나쁜 것은 아니지만, 복잡한 방법을 가지고 있고 아마도 그것을 단순화하려고 노력해야한다는 좋은 징조입니다.
언제든지 반환 할 수 있으며, 방법의 마지막에있을 필요는 없습니다. 주의해야 할 유일한 것은 도달 할 수없는 코드가 없다는 것입니다. 코드에 도달하기 전에 항상 리턴하기 때문에 도달하지 못할 코드입니다.
자신이 혼란스러워하고 실수를 저지르고, 방법이 끝나기 전에 돌아가서 걱정하지 않으려면 피하십시오. 그러나 유용 할 수 있기 때문에 원할 때 어디에서든지 return 문을 사용하는 것을 주저하지 않습니다.
현대 컴파일러를 사용하면 컴파일러에서 (적어도 C# 컴파일러에서) 알 수 있기 때문에 연결할 수없는 코드가 있는지 걱정할 필요가 없습니다. – OregonGhost
Resharper는 중첩 이상의 여러 수익을 선호하는 것으로 보입니다. 예를 들어 값을 반환하는 IF 문 또는 null이 반환되는 경우 null이 반환됩니다. 그 값으로 IF 문 밖에서 또 다른 반환 –
좋은 어림셈, 그래서 +1. 필자의 의견으로는 함수의 끝에서의 리턴은 단지 디폴트 케이스 일 뿐이며, 함수의 타입에 따라 조기 리턴은 에러 (가드 조건 에서처럼)이거나 초기 성공이다. 뭔가 검색). – OregonGhost