본문 바로가기
2.1 CS/기타

[IT] 보일러플레이트 코드 (Boilerplate Code)

by Dohi._. 2024. 10. 17.
728x90
  • 보일러플레이트란코드란?
  • 장점
  • 단점
  • 예시

보일러플레이트(Boilerplate)?

보일러플레이트(Boilerplate) 라는 용어는 1890년대 신문 사업에서 유래되었습니다. 

강철판(Boilerplate)은  boiler라는 증기기계의 일부 재료였고 그 강철판은 일관성있게 형태와 구조를 바꾸지 않고 표준으로 계속 사용되어 왔습니다. 인쇄 산업에서 당시 광고나 컬럼과 같이 자주 사용되는 텍스트 인쇄판은 부드러운 납 대신 강철로 찍기 시작했고 찍어내던 강철 인쇄판이 보일러플레이트와 비슷하게 생겼기 때문에 보일러플레이트(Boilerplate)라고 부르게 되었다.

보일러플레이트 코드란?

보일러플레이트 코드(boilerplate code)는 프로그래밍에서 반복적으로 사용되는 기본 코드 구조를 의미합니다.

반복적으로 비슷한 형태를 띄는 코드로 매번 새로 작성할 필요 없이 재사용할 수 있는 코드이며 사소한 변경이 있어도 최소한의 변경으로 여러곳에서 재사용할 수 있는 코드입니다.


즉 개발하다 보면 아무 생각없이 하나하나 비슷한 코드를 반복해서 적는 경우가 있는데 그러한  코드를 의미합니다.

대표적으로 Getter Setter가 있습니다

장점

  1. 개발 효율성 향상
    • 보일러플레이트 코드를 사용하면 반복적으로 작성해야 하는 코드를 줄일 수 있습니다. 이를 통해 개발 속도가 빨라지고, 코드 작성에 소모되는 시간을 절약할 수 있습니다.
  2. 일관성 유지
    • 프로젝트 전반에 걸쳐 동일한 구조를 사용함으로써 코드의 일관성을 유지할 수 있습니다.
  3. 빠른 프로토타입 제작
    • 초기 프로토타입이나 일부 기능테스트 제품을 빠르게 만들 수 있어 아이디어를 신속하게 테스트할 수 있습니다.

단점

당연하게도 단점도 존재합니다.

  1. 코드가 중복이 됩니다. -> 비효율성
    • 보일러플레이트 코드를 사용하다보면 불필요한 코드들이 혼합되어 전체 코드가 복잡해 질 가능성이 있습니다.
    • 그 과정에서 필요없는 코드나 기능이 남아있어 성능에 영향이 갈 수 있습니다.
  2. 이해가 어렵다. -> 유지보수 어려움
    • 한눈에 볼 수 있는게 아니라서 새로개발하는 사람은 이해하는데 시간이 필요하고 수정 및 확장에 용이하지 않습니다.
    • 따라서 유지보수 할 때도 버그를 찾거나 수정하기 어려워집니다.
  3. 의존성 문제
    • 보일러플레이트 코드를 사용하는 라이브러리나 프레임워크의 버전이 업데이트되면 기존 코드를 수정해야 할 수 있습니다.

예시

1. Getter와 Setter메서드 (JAVA)

객체지향 프로그래밍에서 클래스의 속성에 접근하고 수정하기 위해 자주 사용하는 메서드입니다.

아래는 Java에서의 예시입니다.

public class Person {
    private String name;
    private int age;

    // Getter
    public String getName() {
        return name;
    }

    // Setter
    public void setName(String name) {
        this.name = name;
    }

    // Getter
    public int getAge() {
        return age;
    }

    // Setter
    public void setAge(int age) {
        this.age = age;
    }
}

자바에서 이러한 코드들은 특정 기능을 구현하기 위해 매번 작성해야 하는 코드들입니다.

지금은 2개의 속성이 있지만 많은 속성이 늘어나면 매번 작성해야하는 양이 늘어나게 됩니다!

따라서 작성하는 것을 줄이기 위해서 Lombok의 @Getter와 @Setter를 사용을 주로 합니다
이러한 보일러플레이트 코드의 문제를 해결하고자 한 방법이며 이들도 보일러플레이트 코드라고도 할 수 있습니다.

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class Person {
    private String name;
    private int age;
}

2. Getter와 Setter메서드 (C#)
아래는 C#의 예시입니다.

public class Person
{
    private string name;
    private int age;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    public int Age
    {
        get { return age; }
        set {age = value;}
     }
}

위에서 자바와 동일하게 속성이 많아지면 작성해야할 코드가 늘어납니다.

C#에서는 자동 구현 속성(auto-implemented properties)이라는 기능을 이용합니다.

public class Person
{
    public string Name { get; set; }  // 자동 구현 속성
    public int Age { get; set; }      
}

 

 

3.Logging (JAVA)

로깅(logging) 코드도 보일러플레이트 코드의 예시로 자주 언급됩니다.
로깅은 필수적인 부분인데, 이를 위해 매번 비슷한 코드를 작성해야 하므로 보일러플레이트 코드의 형태를 띱니다.
즉, 로거를 수동으로 생성하고 설정하는 코드는 반복적으로 작성해야 하는 보일러플레이트 코드입니다.
Logger logger = Logger.getLogger(MyClass.class.getName());와 같은 코드가 그 예입니다.

import java.util.logging.Logger;

public class MyClass {
    private static final Logger logger = Logger.getLogger(MyClass.class.getName());

    public void dohi() {
        logger.info("dohi");
    }
}

 

아래의 코드는 위의 로깅 코드를

@Slf4j를 사용한 이 코드는 보일러플레이트 코드를 줄여주는 형태입니다.
하지만, 여전히 기본적으로 로깅을 위한 코드 구조이기 때문에 "로깅을 위한 보일러플레이트 코드"라고 할 수 있습니다.

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class MyClass {

    public void dohi() {
        log.info("dohi");
    }
}


@Slf4j의 사용해서 이러한 로거 생성을 자동으로 처리해 주고, 코드가 훨씬 간결해집니다.
이는 보일러플레이트 코드를 줄여주는 방식으로 이해할 수 있습니다:)

결론

이렇게 보일러플레이트 코드에 대해서 알아보았습니다.
보일러플레이트 코드는 개발 과정에서 유용하게 사용될 수 있지만,
그로 인해 발생할 수 있는 단점들도 분명 존재합니다.
따라서 보일러플레이트 코드를 사용할 때는 장점과 단점을 잘 이해하고, 필요에 따라 조정하는 것이 중요합니다.

 

 

728x90

'2.1 CS > 기타' 카테고리의 다른 글

Cron 표현식  (0) 2024.10.09
웹 크롤링 vs 웹 스크래핑  (0) 2024.10.05
[CS/기타] BackEnd, FrontEnd  (0) 2024.08.28
[CS/기타] 웹(WWW)  (0) 2024.08.28

댓글