본문 바로가기

잡지식

코딩 스타일에 대해서..


개인적으로 2010년부터 JAVA, android 개발을 경험하는 동안 많은 JAVA에 대한 감각을 많이 익혔다고 생각했다.


그러나 이번에 **그룹 하계 인턴 면접을 보면서 아직 부족한 점이 많다고 느꼈다.


그중에 하나가 바로 코딩 스타일이다.


코딩 스타일이 무었인가? 코딩을 할때 각 언어마다 주어진 어떠한 규칙을 말한다 예를 들면 변수명은 소문자로 한다던가 혹은 상수는 대문자로 한다라고 하는 규칙을 말한다.


그 중 내가 지적받은것은 다음과 같은 내용 이었다. 

 (인적성 검사와 함께 친 coding test 기반 - codility.com)


1. if문의 중괄호 위치


2. 루프구문에 대한것


3. 변수명 규칙성


4.변수의 형변환 규칙



================

1. if문의 중괄호 위치

 if문 뿐만아니라 java에서는 여러 구문이 나오게 되고 중괄호를 반드시 넣어야 하는 상황이 온다. 이러한 상황에서 필요한 것은 일관성이다. 어떤 구문에는 중괄호를 if구문 뒤에 넣고 어떤 구문에서는 if구문 아래에 넣으면 일관성이 떨어지는 것이다. 이것은 가독성도 떨어지게 되어 유지보수에도 문제가 생길 수 있게된다. 아래는 좋지 않은 코딩의 예시이다.




2. 루프구문에 대한것

 코딩을 하다보면 당연히 루프구문을 쓰게된다. 그런데 내가 쓴것은 아래와 같은 코딩규칙을 썻다.



 위와 같이 하는 코딩 방식은 매우 잘못된 것이라고 면접관님이 지적하셨다. 당연한 말씀인 것 같다. do while과 같이 조건문안에서 충분히 조건밖으로 빼 낼수 있는 것을 단지 개발의 편의성을 위해 for(;;)을 쓰고, if구문을 쓰는 것은 유지보수 측면에서도 심각한 문제를 일으킬 것이다. 이러한 코드는 지양해야 할 것이다. 아래는 잘못된 코드를 다시 고친 코드이다.




3. 변수명의 규칙성

 변수명에 대한 규칙성도 문제가 생길 수 있다. JAVA의 변수명 규칙은 이 사이트 에서 볼 수 있다.

 아래의 코드는 내가 잘못짠 JAVA 코드이다. 잘 보이는가?



4. 변수의 형변환 규칙

 특정 변수에 대해서 형변환을 할때 당연히 적절한 형변환 규칙을 사용해야한다. 그런데 이것을 제대로 사용하지 않고 심각한 문제를 일으킬 수 있는 코드들이 있다. 바로 내가 사용한 코드이다.


 위와 같은 코드는 심각한 문제를 일으킬 수 있다고한다.(왜그런진 모르겟다.) 이렇게 형변환을 할때는 명시적으로 아래와 같은 구문을 사용하는 것이 좋다고 한다.




==============

조금 두서없이 쓰긴 했지만 면접에서 지적받은 부분은 모두 쓴것 같다.


이러한 부분들은 물론 결과물을 낼때 결과물에 영향을 끼치지 않는다. codility에서 알고리즘 테스트를 하면서도 결과는 5개 문제중에 3개를 맞추고 60%의 정답률을 달성하여 상대적으로 높은 점수를 받게 되었다. 물론 알고리즘 테스트는 답만 나오면 되는 것이다.


그런데 문제는 다음이다. 과연 다른 사람들이 나의 코드를 제대로 읽을 수 있겟는가? 다른사람이 나의 코드를 수정할 때 문제가 없겟는가? 이다.


코딩은 나 혼자 하는 것이 아니다. 팀워크를 통한 결과물을 내는 과정이므로 이러한 규칙을 반드시 따르고 손에 익히는 것이 중요하다고 생각이 든다.


특히 eclipse ide와 같이 자동 줄바꿈과 같은 고급 기능이 들어간 기능들을 쓸 수는 있지만 이러한 고급기능을 항상 쓸수 있는 것이 아니므로 사전에 코딩 규칙에 대해서 많이 생각 해보는 노력이 필요할 것 같다.



사실 학부생을 지나면서 배운 것은 코딩 그 자체이지 코딩규칙이라던가 코딩에 대한 문제점을 지적해준 사람은 아무도 없었다. 그래서 이번 코드리뷰가 뜻깊었는지도 모른다. 앞으로 스스로 공부하거나 혹은 개발할때도 이러한 규칙을 생각하면서 코딩을 한다면 더욱 나은 팀워크를 가진 개발자가 될 것임에 틀림없다.


더 열심히 공부하고 손에 익히도록 노력해야겠다.