더북(TheBook)
public string GetShortCode(string url){
    const string urlValidationPattern =
    @"^https?://([\w-]+.)+[\w-]+(/[\w- ./?%&=])?$";    → 정규 표현식 문자열 구문 분석과 오컬트 호출 의식에 사용한다.
    if (!Regex.IsMatch(url, urlValidationPattern)) {
        return null;    → 올바른 URL이 아니다.
    }
    // 마지막 / 이후 부분을 가져온다.
    string[] parts = url.Split('/');
    string lastPart = parts[^1];     → C# 8.0에 도입된 새로운 구문으로, 어떤 범위의 마지막에서 두 번째 항목을 참조한다.
    return lastPart;
}

이 코드는 처음에는 꽤 괜찮아 보이지만, 가상의 사양을 충분히 고려한다면 이미 버그가 있다는 것을 알 수 있다. URL에 대한 유효성 검사 패턴이 불완전하며, 잘못된 URL이 들어오는 것을 허용하고 있으며, URL 경로에 슬래시가 여러 번 있을 수 있다는 점을 간과하고 있다. 심지어 URL의 마지막 부분을 얻기 위해 불필요한 문자열 배열을 만들고 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.