좋은 코드와 그렇지 않은 코드를 구분하는 방법


코드를 작성하는 것만큼이나 중요한 것이 바로 다른 사람이 작성한 코드를 이해하고 평가하는 능력입니다. 특히 협업 프로젝트나 코드 리뷰를 진행할 때, 코드의 품질을 정확히 판단하는 것이 필수적이죠. 그럼 어떤 기준으로 코드를 잘 짰는지, 아니면 개선이 필요한지 확인할 수 있을까요? 이번 글에서는 좋은 코드를 판단하는 핵심 기준들을 소개합니다.

1. 가독성 (Readability)

가독성은 좋은 코드의 가장 기본적인 조건입니다. 아무리 기능이 완벽하더라도 읽기 어려운 코드는 유지보수하기 어렵습니다.

  • 명확한 변수명/함수명: 이름만 봐도 역할이 명확해야 합니다.
    • 나쁜 예시: calc1(), temp
    • 좋은 예시: calculateTotalPrice(), orderList
  • 적절한 주석 사용: 불필요한 주석은 피하고, 필요한 부분만 명확하게 설명합니다.
  • 코드 구조: 함수나 클래스는 한 가지 역할만 수행해야 하며, 너무 길어지지 않도록 적절히 나눠야 합니다.

2. 간결성 (Simplicity)
코드가 복잡하면 실수와 버그가 생길 확률이 높아집니다. 불필요한 중복과 복잡한 로직은 간결하게 다듬어야 합니다.

  • 불필요한 중복 제거: 같은 코드가 반복되면 DRY (Don't Repeat Yourself) 원칙을 적용해야 합니다.
  • 불필요한 조건문 최소화:
// 나쁜 예시
if (isActive == true) {  
    doSomething();  
}  

// 좋은 예시
if (isActive) {  
    doSomething();  
}

3. 확장성 (Scalability)
코드는 시간이 지남에 따라 수정되거나 새로운 기능이 추가될 수 있습니다. 좋은 코드는 확장성과 유연성이 뛰어납니다.

  • 변경에 유리한 구조: 새로운 기능을 추가할 때 기존 코드를 많이 수정하지 않아도 되는가?
  • 객체지향 설계 원칙: SOLID 원칙을 잘 지키고 있는지 확인하세요.
    • SRP (단일 책임 원칙): 하나의 클래스나 함수는 단 하나의 책임만 가져야 합니다.
    • OCP (개방-폐쇄 원칙): 코드는 확장에는 열려있고, 수정에는 닫혀 
4. 성능 (Performance)
성능은 코드의 실행 시간과 자원 사용량을 평가하는 기준입니다.
  • 효율적인 알고리즘 사용: 시간 복잡도와 공간 복잡도를 확인하세요.
    • 예: 반복문이 O(n^2)인 경우, O(n)으로 최적화할 수 있는지 검토합니다.
  • 불필요한 반복 최소화: 캐싱과 같은 최적화 기법을 활용하세요.
5. 일관성 (Consistency)
코드 스타일이 일관되지 않으면 협업 시 혼란이 생깁니다.
  • 코딩 컨벤션 준수: 팀에서 정한 규칙이나 언어의 Best Practice를 따릅니다.
  • 들여쓰기와 스타일: 들여쓰기, 괄호 사용, 공백 처리 등을 통일합니다.
  • 린터(Linter) 도구 사용: 자동으로 코드 스타일을 점검해 주는 도구를 활용하세요.

6. 테스트 코드 (Testing)
좋은 코드에는 테스트 코드가 필수입니다.
  • 단위 테스트 존재 여부: 함수나 클래스의 단위 테스트가 작성되어 있는지 확인합니다.
  • 엣지 케이스 검토: 예외 상황에 대한 테스트가 포함되어 있는가?
  • 테스트 커버리지: 주요 로직이 테스트 코드로 커버되고 있는지 확인합니다.
7. 보안 (Security)
보안이 고려되지 않은 코드는 큰 문제를 일으킬 수 있습니다.
  • 입력값 검증: 외부 입력값에 대한 철저한 검증이 이루어졌는가?
  • SQL Injection 방지: 쿼리 실행 시 Prepared Statement를 사용했는가?
  • 비밀번호/키 하드코딩 금지: 민감한 정보가 코드에 하드코딩되지 않았는지 확인합니다.
8. 재사용성 (Reusability)
코드가 모듈화되어 다른 곳에서도 재사용될 수 있는가?
  • 함수와 클래스의 모듈화: 하나의 함수나 클래스는 한 가지 역할만 수행하도록 설계합니다.
  • 중복 제거: 반복되는 로직은 공통 함수나 유틸리티 클래스로 분리합니다.

9. 의존성 (Dependencies)
외부 라이브러리나 프레임워크에 지나치게 의존하면 코드의 유연성이 떨어질 수 있습니다.
  • 과도한 라이브러리 사용 지양: 정말 필요한 경우에만 외부 라이브러리를 추가합니다.
  • 유지보수 용이성 검토: 외부 라이브러리가 더 이상 지원되지 않을 경우 대체할 수 있는 계획이 있는지 확인합니다.

마무리하며: 좋은 코드를 위한 핵심 원칙

자신의 코드를 평가할 때 위의 9가지 기준을 체크리스트처럼 활용해 보세요.
  • 가독성: 읽기 쉬운가?
  • 간결성: 불필요한 부분이 없는가?
  • 확장성: 변경이나 추가가 쉬운가?
  • 성능: 효율적인가?
  • 일관성: 코드 스타일이 통일되어 있는가?
  • 테스트: 단위 테스트가 있는가?
  • 보안: 보안 리스크가 없는가?
  • 재사용성: 다른 곳에서도 활용 가능한가?
  • 의존성: 과도하게 외부에 의존하지는 않는가?

코드 리뷰는 단순히 오류를 찾는 과정이 아닌것 같습니다. 더 나은 코드와 협업 문화를 만들어가는 중요한 과정이라고 생각합니다. 좋은 코드란 유지보수하기 쉽고 확장 가능하며, 읽기 쉬운 코드입니다. 이 글이 좋은 코드와 나쁜 코드를 구분하는 데 도움이 되기를 바랍니다! 읽어주셔서 감사합니다!

댓글 쓰기

다음 이전