들어가며
작업을 하면서 코드를 작성할 때 막상 힘들게 만들었지만 깔끔해 보이지 않고,
작동이 되기는 하지만 코드 리뷰를 해주실 때 알려주시는 분들이 코드 리딩에 많은 시간이 소비되는 걸 느껴서 고쳐보고 싶어 찾아보았습니다.
좋은 코드는 기준이 뭘까요?
열심히 만들고 구현된다고 해도 구글링을 통해 알아보면 좋은 코드의 기준은 조금씩 다르고, 각자의 경험에 따른 좋은 코드를 만드는 기준도 다릅니다. 그래서 많은 사람들이 생각하는 좋은 코드의 대표적인 기준은
1.읽기 쉬운 코드
2.중복이 없는 코드
3.모든 곳에서 공통으로 쓰이는 코드
4.테스트가 쉬운 코드
등등..이 있습니다.
읽기 쉬운 코드
본인은 읽기가 쉬울 수 있으나 모든 개발자가 동일한 환경에서 코딩하는 것이 아니며, 같은 배경지식과 경험을 가지고 있는 것이 아니기 때문에 기준이 모호합니다. 근본적으로 읽기 쉬운 코드가 되려면 짜는 본인도 코드를 만들면서 이해가 완벽하게 되어야 하고 일관성이 있는 이름 규칙, 주석, 들여쓰기 등 다른 사람에게 순서에 맞게 최대한 정리를 통해 설명할 수 있도록 접근성이 쉽게 하는 것이 좋습니다.
EX>
let a = 3;
let b = 'cat';
let c = 'dori';
아주 간단한 예시로 위 예시 코드는 값을 보면서 변수명을 유추할 수 있지만 길어지면 알기가 힘듭니다.
let age = 3;
let animalType = 'cat';
let name = 'dori';
이름을 제대로 명시하여 변숫값이 어떤 것이 할당되는지 유추할 수 있습니다.
중복이 없는 코드
코드를 만들고 확인해 보았을 때 같은 코드 조각이 같은 역할을 하며 두 군데 퍼져 있다는 걸 기억하기에는 쉽지 않습니다.
그렇게 남겨진 코드는 메모리를 차지하게 되고, 또한 나중에 누가 수정을 하거나 만들게 되면 다른 곳에서 에러를 발생하게 하거나 필요 없는 자리를 차지하여 코드가 길어지게 됩니다.
따라서 코드를 만들 때 재사용성이 좋게 최대한 같은 역할이나 불필요하게 다시 변수에 담는 일을 줄이고 여기저기 쓰이지 않도록 중복을 최대한 줄이는 것이 좋습니다.
테스트가 쉬운 코드
테스트가 쉬우면 물론 좋습니다.
테스트 코드를 작성해 주면 코드에 안정감도 생기고 리팩토링에 빠른 대처를 할 수 있습니다.
테스트가 쉬운 코드는 코드 컨벤션을 잘 지키며 만들었는가?
또는 코드에 표현한 변수명이나 접근이 다른 누군가가 보아도 이해하기 쉽게 만들었는가에 중점을 두고 기술적이기보단 문화적으로 접근하여 테스트할 수 있게 만들도록 노력해야 합니다.
EX>
function sum(a, b) {
return a + b; //값을 받아 더하는 함수
}
값을 더하는 함수의 테스트를 위해 아래 코드로 확인할 수 있습니다.
var result = sum(1, 2);
var expected = 5;
//테스트 !
if (result !== expected) {
throw new Error(result + ' is not equal to ' + expected);
}
마치며
위 방법이 전부가 아니겠지만 위 방법 모두를 최대한 준수하며 코드를 만든다고 해서
좋은 코드가 바로 완성이 되기는 어렵습니다.
좋은 코드는 어떻게 만들어야 할까요? 라는 질문을 받았을 때 저처럼 고민이 된다면
1.코드 간의 의존성을 최대한 고민하여 만들자
2.코드 컨벤션의 규칙을 지키며 일관성이 있도록 만들자
3.코드에 확장성이 있도록 설계를 하자
4.최대한 중복이 없이, 만약 중복이 필요하다면 주석과 함께 격리하여 만들자
5.코드를 만들고 다른 누군가가 보았을 때 읽기 쉬운지 다시 확인하자
이 5가지가 전부가 아니겠지만 최대한 지키며 체크 해보는 습관을 만들어 가보는 것도 좋은 방법이 될 것 같습니다.