깊게 중첩된 If 문을 줄이기 위해 일찍 반환
6450 단어 programmingcsharpbeginners
소개
코드에 깊은 중첩을 도입하는 것은 쉽습니다. 깊은 중첩을 줄이는 몇 가지 기술이 있습니다. 이러한 기술 중 하나는 "조기 반환"입니다. 깊은 중첩을 줄임으로써 논리를 쉽게 따를 수 있습니다. 너무 많은 시간을 들이지 않고도 잠재적인 버그를 발견할 수 있습니다. 최근에 Return Early 기법을 다시 살펴보았는데 이 포스트의 주요 내용이 될 것입니다.
깊게 중첩된 유효성 검사
입력에 따라 특정 문자열을 반환하는 메서드를 생각해 봅시다. 이상적인 입력 문자열은 "cat"이며 확인해야 할 다섯 가지 사항이 있습니다.
위의 유효성 검사를 하나씩 구현할 수 있습니다.
중첩된 if 문
public string CheckInputString(string inputString)
{
string[] badWords = { "dog", "dogs" };
if (!String.IsNullOrEmpty(inputString))
{
if (inputString.Length < 7)
{
if (!badWords.Contains(inputString))
{
if (!inputString.Any(char.IsDigit))
{
if (inputString == "cat")
{
return "Meow";
}
return inputString;
}
return "the string contains numbers";
}
return "please dont use the bad words";
}
return "too long";
}
return "null or empty";
}
중첩되지 않은 if 문
최상의 사례 시나리오에 집중하여 위의 모든 중첩된 if 문을 제거할 수 있습니다. 이 경우 입력 문자열이 "cat"인 것이 가장 좋습니다. 나머지 경우는 "잘못된"것으로 간주됩니다. "잘못된"결과를 만나자마자 값을 반환하고 메서드를 종료합니다.
아래에서 볼 수 있듯이 초기 반환 기술을 활용하여 깊은 내포를 해결할 수 있습니다.
public string CheckInputStringFixed(string inputString)
{
string[] badWords = { "dog", "dogs" };
if (String.IsNullOrEmpty(inputString))
{
return "null or empty";
}
if (inputString.Length >= 7)
{
return "too long";
}
if (badWords.Contains(inputString))
{
return "please dont use the bad words";
}
if (inputString.Any(char.IsDigit))
{
return "the string contains numbers";
}
if (inputString != "cat")
{
return inputString;
}
return "Meow";
}
이것은 이전 예제보다 훨씬 명확하게 보일 것입니다.
결론
원치 않는 상황이 발생하면 즉시 값을 반환하여 메서드에서 빠져나오는 반환 초기 기법을 다시 살펴보았습니다. 이 기술은 많은 상황에 적용될 수 있으며 코드의 가시성을 크게 높였습니다.
Reference
이 문제에 관하여(깊게 중첩된 If 문을 줄이기 위해 일찍 반환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/shutoosawa/early-return-to-reduce-deep-nesting-50i7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)