-
쉼표(,) 또는 콜론(:)을 구분자로 가지는 문자열을 전달하는 경우 구분자를 기준으로 분리한 각 숫자의 합을 반환한다. 예: "" => 0, "1,2" => 3, "1,2,3" => 6, "1,2:3" => 6
-
앞의 기본 구분자(쉼표, 콜론) 외에 커스텀 구분자를 지정할 수 있다. 커스텀 구분자는 문자열 앞부분의 "//"와 "\n" 사이에 위치하는 문자를 커스텀 구분자로 사용한다. 예를 들어 "//;\n1;2;3"과 같이 값을 입력할 경우 커스텀 구분자는 세미콜론(;)이며, 결과 값은 6이 반환되어야 한다.
-
사용자가 잘못된 값을 입력할 경우 "[ERROR]"로 시작하는 메시지와 함께 Error를 발생시킨 후 애플리케이션은 종료되어야 한다.
1. 입력 및 출력
- @woowacourse/mission-utils에서 제공하는 Console API를 사용
- Console.readLineAsync(), Console.print() 이용
2. 쉼표 또는 콜론으로 숫자 분리 후 합 반환
요구사항
- 음수가 포함되면 error를 호출한다.
- 구분자에서는 -가 들어갈 수 있다.
구현
- 최종적으로 구한 number를 계산할 때, 음수값이 검출되면 error로 처리한다.
- 코드 ErrorHandler.validateNumber(parsedNum);
요구사항
- 입력값이 없으면 error로 처리한다.
구현
- input의 길이가 0이면 예외처리한다.
- 코드 ErrorHandler.validateEmptyInput(input);
요구사항에는 명시되어 있지 않으나, 테스트케이스를 기준으로 커스텀 구분자는 1개라고 가정했다.
구현
- 커스텀 구분자 구별 정규식인 const customDelimiterRegex = ///(.*?)\n/; 로 split을 하게되면, 커스텀 선언이 2개 이상일 경우 split의 결과가 5개의 항 이상이 된다. 이를 이용해서 예외처리를 진행한다.
- 코드 ErrorHandler.validateInput(parts);
1. 상황 //kb\n 와 같은 커스텀 구분자가 포함된 input에서 const customDelimiterRegex = ///(.*?)\n/; const match = input.match(customDelimiterRegex); 와 같은 코드에서 match가 null로만 나오는 오류 발생
2. 분석 진짜 줄바꿈 문자인 \n와 그냥 문자인 \n의 구분에서 오류가 발생 정규식은 진짜 줄바꿈 문자를 찾으려고 시도 -> input에는 진짜 줄바꿈 문자는 없음 -> match가 null.
3. 해결 정규식 코드를 수정 const customDelimiterRegex = ///(.?)\n/; -> const customDelimiterRegex = ///(.?)\n/; input에는 줄바꿈의 개념이 없음, 정규식의 \n을 \n으로 변경해서 단순한 문자인 \n을 찾는 것으로 변경.
4. 결과
- AngularJs의 커밋 컨벤션을 참고해가면서 커밋을 올리고, 디자인을 먼저 생각하면서 코딩을 하니 좀 더 체계적이고 효과적으로 코딩이 진행됨을 느꼈다.
- README에 정리하면서 코딩을 진행하니 프로그램이 직관적으로 와닿기는 했지만, 너무 많은 내용이 한꺼번에 보이는 문제가 있었다. README를 분할해서 보관하는 것을 추후에 고려해보고 싶다.