여태까지 잘 연산되던 계산기가 특정 상황에서 계산이 안되는 현상을 발견했다.
그것은 팔찌의 enhance옵션이 발동되면서(쐐기+망치 등) 들어오는 옵션에 덧셈연산이 추가되는 부분이었다.
여태까지는 메서드로 들어오는 percent(value)의 값은 일반적으로 string이든 number든 상관이 없었다. 왜냐하면 앞에서 string이 들어오더라도 뒤에서 *이나 / 을 하게 되면 number로 파싱해서 number간의 연산과 동일하게 진행되기 때문이다.(의도한 대로)
하지만 덧셈연산이 되면 다르다 문자열의 concat이 되버리면서 의도하지 않은 숫자가 완성된다. enhance옵션에 한해서 덧셈 연산이 있었는데 이 부분에서만 오류가 발생했다.
아무래도 지금 당장은 프로젝트 규모가 너무 커졌고 모든 연산기에 데이터 타입을 체크해주긴 힘들었다. 그래서 덧셈 연산이 있는 메서드 부분을 최대한 확인하려고 노력했고 같은 문제가 발생하면 쉽게 찾을 수 있게 되었다. 하지만 이러한 해결책이 좋은 방법은 아니라고 생각되어 다음에 새 프로젝트를 할 때는 어떻게 할지 생각해 보았다.
아무래도 이런 상황에서 TypeScript였다면? 이라는 생각을 지울 수가 없다. 물론 지금 전체적인 상황에서 처음부터 TypeScript를 도입했다면 초창기 JS도 익숙하지 않은 상황에서 프로젝트 생산속도가 상당히 부족했을 것 같다.
하지만 프로젝트 완성 단계, 그리고 새 기능들을 고안하는 현재 기준에서 봤을 때 지금 생기는 문제들은 주로 이런 작은 예외처리단계, 타입체크가 가능했다면 이미 처리되었을 문제들이 많이 보인다.
그래서 지금 당장 JS에서 해결하기 위해 2중 안전장치(입력시에도 number로 잘들어가는지 확인하고 계산 시에도 string인 경우 number로 변환 후 계산하도록)를 도입하는게 좋을 것 같다.