로버트 C 마틴의 보이스카웃 규칙

엔스마트·2024년 6월 5일

로버트 C 마틴

목록 보기
2/3

로버트 C. 마틴의 "보이스카웃 규칙" (Boy Scout Rule)은 소프트웨어 개발과 유지보수의 중요한 지침 중 하나입니다. 이 규칙의 핵심 개념은 다음과 같습니다:

보이스카웃 규칙의 정의
"코드를 만났을 때보다 더 깨끗하게 만들어 놓고 떠나라."

보이스카웃 규칙은 소프트웨어 개발자가 코드베이스의 질을 꾸준히 향상시키기 위한 간단하지만 강력한 원칙입니다. 이 규칙을 따르면 시간이 지남에 따라 코드베이스가 점점 더 깨끗하고 유지보수하기 쉬워지며, 이는 결국 소프트웨어 프로젝트의 성공과 장기적인 건강에 기여하게 됩니다.

설명

이 규칙은 소프트웨어 개발자가 코드를 수정하거나 기능을 추가할 때, 기존의 코드를 조금이라도 개선하는 습관을 가지도록 권장합니다. 보이스카웃 규칙은 다음과 같은 방법으로 적용될 수 있습니다:

  1. 코드 청소: 주석을 정리하거나 불필요한 코드를 제거하고, 변수 이름이나 함수 이름을 더 의미 있게 변경하는 등의 작은 수정으로 코드를 더 깨끗하게 만듭니다.
  2. 리팩토링: 복잡하거나 중복된 코드를 단순화하고, 가독성을 높이기 위해 리팩토링을 수행합니다.
  3. 일관성 유지: 코드 스타일과 포맷을 일관되게 유지하여, 전체 코드베이스의 일관성을 높입니다.
  4. 테스트 추가: 기능을 수정하거나 추가할 때, 그에 따른 테스트 코드를 추가하여 코드의 신뢰성을 높입니다.

예시

예를 들어, 아래와 같은 코드가 있다고 가정해봅시다:

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }

    public int sub(int a, int b) {
        return a - b;
    }
}

이 코드를 수정하거나 기능을 추가할 때, 보이스카웃 규칙을 적용해 다음과 같이 개선할 수 있습니다:

  1. 의미 있는 이름 사용: sub 메서드 이름을 subtract로 변경하여 더 명확하게 합니다.
  2. 일관된 포맷 유지: 코드 스타일을 일관되게 유지합니다.
  3. 주석 추가: 필요하다면 중요한 부분에 주석을 추가합니다.
  4. 테스트 추가: JUnit을 사용하여 테스트 코드를 추가합니다.

개선된 코드 예시:

public class Calculator {
    /**
     * Adds two integers and returns the result.
     * 
     * @param a the first integer
     * @param b the second integer
     * @return the sum of a and b
     */
    public int add(int a, int b) {
        return a + b;
    }

    /**
     * Subtracts the second integer from the first and returns the result.
     * 
     * @param a the first integer
     * @param b the second integer
     * @return the result of subtracting b from a
     */
    public int subtract(int a, int b) {
        return a - b;
    }
}

테스트 코드 추가:

import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class CalculatorTest {
    private final Calculator calculator = new Calculator();

    @Test
    public void testAdd() {
        assertEquals(5, calculator.add(2, 3));
        assertEquals(0, calculator.add(0, 0));
        assertEquals(-5, calculator.add(-2, -3));
    }

    @Test
    public void testSubtract() {
        assertEquals(1, calculator.subtract(3, 2));
        assertEquals(0, calculator.subtract(0, 0));
        assertEquals(1, calculator.subtract(-2, -3));
    }
}
profile
클라우드 전환, MSA 서비스, DevOps 환경 구축과 기술지원 그리고 엔터프라이즈 시스템을 구축하는 최고 실력과 경험을 가진 Architect Group 입니다.

0개의 댓글