개발을 하다 보면 코드를 작성하는 일 보다 읽는 일이 많다.
특히 연차가 쌓일수록 다양한 사람들이 작성한 코드들을 보면서 코드 가독성에 대해서 생각하게 되었다.
개발을 처음 시작했을 때에는 읽기 쉬운 코드보다는 아름다운 코드를 추구했었다.
예를 들면
int i = 2;
int shift = i << 1;
int multiply = i * 2;
위 코드에서 shitf
와 multiply
의 값은 둘 다 4이다. 그리고 shift 연산이 조금 더 효율적이라고 알고 있다. 시프트를 활용한 곱셈은 비트 연산의 이해를 바탕으로 하여 조금이라도 더 빠르고 자원을 적게 사용하는 소위 아름다운 코드라고 생각했다.
메모리를 적게 사용한다거나, 연산을 한 번이라도 덜 하거나, 입출력 빈도를 최소화하는 등의 코드를 멋있다고 생각했고 선호했다.
그러나 최근에는 생각이 많이 바뀌었다. 코드 작성에 있어서 최고 우선순위는 가독성이다.
가독성이 중요한 이유는 이미 많은 사람들이 알고 있겠지만 다시 정리를 해본다.
이외에도 다양한 장점들이 많다!
그럼 가독성 좋은 코드란 무엇일까?
한 줄로 표현한다면 코드만 보고도 기능을 파악할 수 있어야 한다고 생각한다.
여러 요소로 나눠본다면 많은 사람들이 사용하는 스타일로 작성되어 있고, 역할과 기능 별로 잘 분리되어 있고, 많은 정보가 공개되어 있어야 한다. 있을 법한 장소에 있어서 쉽게 찾을 수 있고, 예상했던 기능대로 작동하며, 알고 싶은 정보를 찾기 전에 알려주는 코드가 최고의 코드라고 생각한다.
이런 코드를 어떻게 작성해야 할까에 대해서 많이 고민해 봤다. 역시 많은 사람들이 알고 있겠지만 다시 정리해 봤다.
null
을 반환하는지 빈 객체를 반환하는지, 발생할 수 있는 RunTimeException
이 있는지 등을 작성한다. 이런 내용을 JavaDoc에 작성한다. (주석은 많을수록 좋다!)Stream
을 쓰고 주석으로 설명을 덧붙이는 방법도 좋은 것 같다.if
를 쓰던 코드에 갑자기 switch
가 등장하면 무슨 의미인지 생각해보게 된다. 만약 기능이 복잡하면 더 깊은 함정에 빠지게 된다.더 다양한 방법들이 있겠지만 이 정도로 마무리!
물론 시간이 지나면서 생각이 바뀔 수도 있고 가독성이 별로 중요하지 않을 수도 있다. 혹은 위의 방법들이 나만의 이상한 방식일 수도 있다.
그렇지만 분명 읽기 쉬운 코드는 좋다!!
그러니 다른 개발자들도 모두 공감하여 더 좋은 방법들이 개발되고, 프로그램들이 더욱더 쉬워졌으면 하는 바람이다.