안녕하세요! 이 부분은 split 으로 구분된 토큰들을 각각 검증하는 부분입니다!
각 토큰은 현재 문자열 상태입니다
각각을 정수로 변환해보며 정수로 형변환을 진행할 수 없는 경우에 예외가 발생하게 되기에
문자열에는 정수만 입력되어야 한다는 에러 메시지를 출력하게 됩니다!
IO를 따로 관리하는게 어떤 동작일까요?
저는 지금의 구조가 말씀하신 상황을 처리할 수 있다고 생각했습니다! 제가 의도한 것은 예를 들어, 콘솔 입출력 대신 파일 입출력을 지원해야 한다면 FileIO를 구현하고 10번째 라인을 IO io = new FileIO();로 작성하고 이외의 코드는 수정하지 않으면서도 요구사항을 만족하는 것입니다.
네 맞습니다~ 하드코딩된 부분은 상수화하는게 좋습니다. 하지만 지나친 상수화는 선언된 위치와 사용된 위치를 계속 번갈아 봐야한다는 가독성 측면에서 불편함도 있습니다! 이점도 함께 알고 계시면 좋을 것 같습니다.
특히 상수화는 "//"와 같은 리터럴이 여러번 등장할 때 그 효과가 느껴지는데, 이 코드에서는 1번만 사용되기 때문에 제외한 것이 의도입니다!
조건문을 별도의 메서드로 관리하는 것을 말씀하신걸까요? 예를 들어 parseOperands의 for{ conditionCheck() }와 같은 동작일까요? 제가 이해한 것이 맞다면 말씀하신 것이 기능의 분리라는 측면에서는 고려할만 하다고 생각합니다.
하지만 기능의 확장성 측면에서는 validate가 그 역할을 충분히 할 수 있고, isEmpty(...