코드 복잡도

코드 복잡도

.코드가 얼마나 복잡한지 나타내는 지표

즉, 이해하기 어렵거나 유지보수성이 어려운 정도를 의미함

  • if, for, while, switch 같은 제어 흐름이 많을수록 복잡도 증가

  • 코드 길이와 중첩이 많아질수록 복잡도 증가

  • 가독성이 떨어지고 유지보수성이 떨어짐

  • 복잡도가 높은 코드는 이슈가 발생할 확률이 높다.

  • 복잡도가 높은 함수는 디버깅 시간이 매우 많이 걸리고, 단위 테스트를 작성하기 매우 어렵다.

    • 리팩터링부터 적극적으로 수행

복잡도를 낮추는 방법

  • 하나의 함수가 많은 역할을 하고 있다면 분리 (SRP)

  • Early Return -> 불필요한 중첩을 줄임

  • 중복된 코드를 재사용하여 유지보수서 높힘

개선이란?

  • 현재의 업무를 효율적으로 수행하고(잔업을 줄이고), 동시에 품질을 높이는 것

  • 현재의 업무를 줄이지 않으면서 테스크를 추가하는 것은 개선이라 말할 수 없다.

단위 테스트 대상

대부분의 버그는 소스 코드 파일의 약 10% ~ 20% 부분에서 발생한다.

  • 코드의 20%를 커버하면서 차근차근 탐색적 테스트를 수행하는것이 바람직!

탐색적 테스트란?

  • 사전에 정해진 테스트 케이스 없이, 테스트하는 사람이 자유롭게 탐색하며 결함을 찾는 테스트 방식

범위 선정

  • 최근 변경 횟수에 가중치를 붙이자. -> 핫 스팟

  • 파일의 최근 변경 횟수가 많고, 행수가 긴 것부터 단위 테스트를 수행하는것이 바람직하다.

핫스판이란?

  • 버그가 발생하기 쉬운 정도를 수치화한 것

  • 핫스팟 값이 큰 파일에서 버그가 발생한다고 정의

  • 즉, 최근에 버그 수정이 많이 발생한 코드를 핫스팟

Last updated