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의 마지막 부분을 얻기 위해 불필요한 문자열 배열을 만들고 있다.