본문 바로가기

MY개발생각

[개발생각] toString()과 toInt()의 비교 순서에 대해서

작은 차이가 명품을 만든다.. 어느 광고 카피가 생각난다.

 

 

Int형 userId변수가 있고, string형 userIdStr변수가 존재하는데,

이 두개의 값 자체는 정수값으로 같고, 타입만 틀린상태라고 해보자.

이 두 변수를 비교해서 처리하는 로직이 아래와 같이 코딩되었다고 가정하면,

 

if (userId.toString() == userIdStr) {

   //비즈니스 로직

} else {

  //비즈니스 로직

}

이 코드가 잘 짜여진 코드일까? 생각해보자..

 

단연코, 나는 아니라고 생각한다.

 

엄청 심플한 코드 같지만, 정말 세밀한 차이로 코드의 퀄리티가 달라질수있다.

위의 코드는 아쉽지만, 잘못 짜여진 코드라고 생각한다.

userIdStr은 String형 타입, 문자열이기에, userIdStr안의 값이 정수값인지, 문자가 포함되있는지를 판단할수없다.

따라서  userIdStr이 정수값이 아닌경우, 즉 데이터가 잘못들어간경우 (예: 1234ABC), else를 타게 된다.

로직상으로는 맞다고 생각이 되지만, userIdStr자체가 잘못된값이 들어간 경우를 필터 할수없는 반쪽짜리 불안전한 코드이다.

 

이 코드를 아래와 같이 수정하면 어떨까?

if (userId == userIdStr.toInt()) {

    //비즈니스 로직

} else {

   //비즈니스 로직

}

 

useIdStr을 toInt()로 변환해서 비교하게 살짝만 바꾸면, userIdStr에 문자열이 포함되 있는경우,

toInt() 변환시 넘버포메팅 예외가 발생하고, else를 타지않을것이다.

 

변환하는 변수만 바꾸었을뿐인데, userIdStr에 잘못된 값이 들어간 오류를 걸러낼수있고, else문도 타지않게 할수있다.

훨씬 논리적으로 탄탄한 코드가 된다.

 

이 작은 차이가 코드를 명품을 만든다.

코드가 더 추가된것도 아니고, 순서만 바꾼 코드이지만, 그 영향력은 엄청나다.

 

AI가 아무리 발전했다고 하더라도, 이런 세세한 조정까지 할수있는 것은 아직은 인간 개발자뿐이라고 생각한다.

(물론, 저런 세밀한 것까지 생각하고 개발 할수있는 개발자가 있다는 전제가 있긴하지만..ㅎ)

 

항상 한줄 한줄 코딩할때, 왜! 라는 단어를 우리는 '꼭' 명심해야한다....

 

우연히 무심코, 첫번째 코드를 보고, 넘겼다가, 번개처럼 뒤통수를 맞으며, 두번째 코드각 생각나서... 글을 써본다.

그래도 뿌듯하구나..(이 정도까지 왔구나..나란 녀석..ㅎㅎ)