단순하게 시작했던 계산기 프로젝트에 문제점들이 생기면서 코드를 수정하고 예외가 발생하는 부분들을 찾아 예외 처리를 하면서 생각보다 시간을 많이 쓰게 되었다.
다음은 변경된 사항이다.
- 모든 것은 객체라고 생각해서 만들었던 단순 안내 문구들을 담았던 클래스를 삭제
- 계산할 값들을 저장하는 클래스에서 입력값에 대한 검증을 하는 부분을 제거
- 검증만을 담당하는 클래스를 생성
- 검증 후 바로 계산을 시작하면 저장을 할 필요가 없으므로 저장을 담당하는 클래스 삭제
- 모든 값을 받아서 계산하는 방식에서 두 개의 값만 받아서 계산하는 방식으로 변경
- 계산 방식 변경으로 인한 main 함수에 반복문(while) 추가 - 모든 값의 계산이 끝날 때까지 반
- 예외 처리 추가
- 0으로 나누는 경우 - 이 부분은 식을 검증하는 과정에서 처리할 수 없었고 나누는 과정에 처리
- +3 같이 피연산자가 하나인 경우 - 연산 기호를 저장하는 리스트와 숫자를 저장하는 리스트의 사이즈 비교로 처리
- 입력값이 공백인 경우
- 문자열로만 이루어진 값인 경우
코드를 개선하면서 어려웠던 점은 예측하지 못한 예외들이 발생했을 때이다.
보통 NumberFormatException가 많이 발생하지만 그 외의 예외에 대해서는 어떤 예외로 처리해야 하는지 결정하는 부분이 어려웠다.
현재 입력받는 값에서 문자열을 걸러낼 때 Exception 예외를 던지고 있는데 이 부분도 특정 예외가 있는지 찾아보고 걔선해야 될 것 같다.
결론 : 같은 예외가 발생할 때를 대비해서 예외 케이스들을 정리해두자!
'TIL(Today I Learned)' 카테고리의 다른 글
Baekjoon 구간 합 구하기 4 문제를 풀면서 삽질하기 (1) | 2024.05.02 |
---|---|
숫자 야구 게임을 구현하면서 다시 객체 지옥에 빠지다. (1) | 2024.05.01 |
TIL - Kotlin에서 main 함수 실행 시 LinkageError 발생 (0) | 2024.04.29 |
SQL - 날짜에 관한 group by 문제 (0) | 2024.04.25 |
두 번째 Kotlin 계산기 구현 - 객체지향에 대해 생각하기 (0) | 2024.04.24 |