코드 가독성

이재연·2023년 3월 3일
0

코드 가독성에 대한 생각

개발을 하다 보면 코드를 작성하는 일 보다 읽는 일이 많다.
특히 연차가 쌓일수록 다양한 사람들이 작성한 코드들을 보면서 코드 가독성에 대해서 생각하게 되었다.

개발을 처음 시작했을 때에는 읽기 쉬운 코드보다는 아름다운 코드를 추구했었다.
예를 들면

int i = 2;
int shift = i << 1;
int multiply = i * 2;

위 코드에서 shitfmultiply의 값은 둘 다 4이다. 그리고 shift 연산이 조금 더 효율적이라고 알고 있다. 시프트를 활용한 곱셈은 비트 연산의 이해를 바탕으로 하여 조금이라도 더 빠르고 자원을 적게 사용하는 소위 아름다운 코드라고 생각했다.

메모리를 적게 사용한다거나, 연산을 한 번이라도 덜 하거나, 입출력 빈도를 최소화하는 등의 코드를 멋있다고 생각했고 선호했다.

그러나 최근에는 생각이 많이 바뀌었다. 코드 작성에 있어서 최고 우선순위는 가독성이다.

가독성이 중요한 이유

가독성이 중요한 이유는 이미 많은 사람들이 알고 있겠지만 다시 정리를 해본다.

  1. 유지 보수가 쉽다.
    사실 가장 강력한 이유이다. 유지 보수가 쉽다는 건 시간이 오래 지나도 사용하는 애플리케이션이 될 가능성이 높다는 것이다. 어느 누가 코드를 봐도 기능을 한눈에 파악할 수 있다면 기능 개선과 에러 수정을 쉽게 할 수 있다.
  2. 작업 시간이 줄어든다.
    개발자라면 기능 하나를 수정하기 위해서 파도를 타다가 길을 잃은 적이 있을 거라고 생각한다. 아니면 알려지지 않은 런타임 예외 때문에 수습을 한다던가. 가독성 좋은 코드는 이런 불필요한 시간들을 줄여준다.
  3. 의사소통이 원활하다.
    에러를 발견하기 쉽고, 결과를 예상하기 쉽다. 내가 발견하지 않아도 이런 점들에 대해 피드백 받기 쉬우며, 일일이 코드를 설명하지 않아도 된다.

이외에도 다양한 장점들이 많다!

가독성 좋은 코드

그럼 가독성 좋은 코드란 무엇일까?

한 줄로 표현한다면 코드만 보고도 기능을 파악할 수 있어야 한다고 생각한다.

여러 요소로 나눠본다면 많은 사람들이 사용하는 스타일로 작성되어 있고, 역할과 기능 별로 잘 분리되어 있고, 많은 정보가 공개되어 있어야 한다. 있을 법한 장소에 있어서 쉽게 찾을 수 있고, 예상했던 기능대로 작동하며, 알고 싶은 정보를 찾기 전에 알려주는 코드가 최고의 코드라고 생각한다.

가독성 좋은 코드를 작성하는 방법

이런 코드를 어떻게 작성해야 할까에 대해서 많이 고민해 봤다. 역시 많은 사람들이 알고 있겠지만 다시 정리해 봤다.

  • 하나의 객체는 한 가지 역할을 하고 하나의 메서드는 하나의 기능을 하도록 작성한다. 소위 객체 지향성 프로그래밍이라고 불리는 개발 방법을 적용한다.
  • 객체나 메서드를 짧게 작성한다. 코드가 너무 길어지면 나눌 수 없는지 확인해 본다.
  • 객체나 메서드 이름은 많은 사람들이 사용하는 패턴으로, 쉽게 명명한다.
  • 주석을 잘 작성한다. 기능/파라미터/반환값에 대한 설명, 결과가 없을 때 null을 반환하는지 빈 객체를 반환하는지, 발생할 수 있는 RunTimeException이 있는지 등을 작성한다. 이런 내용을 JavaDoc에 작성한다. (주석은 많을수록 좋다!)
  • 사용하지 않는, 주석 처리한 코드는 지운다. 꼭 필요하다면 날짜, 담당자, 이유 등을 써둔다.
  • 불변성을 지향한다. 파라미터로 받은 값을 수정하지 않고, 한 가지 변수를 두고 여러 곳에서 값을 바꾸며 사용하지 않는다.
  • 중요하다면 여러 줄로 나눠쓰고 필요 없는 코드라면 굳이 나누지 않는다. 예를 들면 객체에 파라미터가 많으면 빌더 패턴을 적용한다거나, 컬렉션 변환은 Stream을 쓰고 주석으로 설명을 덧붙이는 방법도 좋은 것 같다.
  • 코드 스타일을 유지한다. 예를 들면 항상 다중 if를 쓰던 코드에 갑자기 switch가 등장하면 무슨 의미인지 생각해보게 된다. 만약 기능이 복잡하면 더 깊은 함정에 빠지게 된다.
  • 불필요한 띄어쓰기나 줄 바꿈은 지양한다.

더 다양한 방법들이 있겠지만 이 정도로 마무리!

마무리

물론 시간이 지나면서 생각이 바뀔 수도 있고 가독성이 별로 중요하지 않을 수도 있다. 혹은 위의 방법들이 나만의 이상한 방식일 수도 있다.

그렇지만 분명 읽기 쉬운 코드는 좋다!!

그러니 다른 개발자들도 모두 공감하여 더 좋은 방법들이 개발되고, 프로그램들이 더욱더 쉬워졌으면 하는 바람이다.

0개의 댓글