들어가기 전

보일러 플레이트의 정의만 보고 "오? 보일러 플레이트코드 좋은 거 같은데 왜 보일러 플레이트코드를 줄이려고 하지?"라는 생각으로 처음에 이해가 잘 가지가 않았습니다.  그래서 이번 글에서는 보일러 플레이트 정의, 단점, 줄이는 법과 필자가 왜 좋다고 생각했는지에 대해 알아보겠습니다.

 

 

보일러 플레이트란?

보일러 플레이트는 최소한의 변경으로 여러 곳에서 재사용되며, 반복적으로 비슷한 형태를 띠는 코드를 말합니다.

 

예시)

 

public class Person {
    private String name;
    private int age;
    
    public Person() {}
    
    public Person(String name, int age) {
    	this.name = name;
        this.age = age;
    }
    
    public void setAge(int age) {
        this.age = age;
    }
    
    public int getAge() {
        return age;
    }
    public void setName(String name) {
        this.name = name;
    }
    
    public String getName() {
        return name;
    }
    
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

 

단점

위와 같이 클래스를 정의할 때마다 클래스에 속한 상태값에 맞게 getter/setter 등을 정의해주어야 합니다. 

클래스를 정의할 때마다 getter/setter 등을 정의를 하게 되면 비효율적이고 개발자 입장에서는 반복적인 작업을 하게 돼서 귀찮을 수 있습니다.

 

 

줄이는 방법

1. 롬복 사용하기 : 롬복을 사용하면 위와 같이 getter/setter을 안 하고 @Getter, @Setter로 간단히 선언하여 getter와 setter를 정의할 수 있고 생성자, toString 등을 정의해 줍니다.

 

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

 

2. Kotlin(코틀린) 사용 :  Kolitn의 Data 클래스는 primary 생성자를 선언하는 것만으로 equals(), hashCode(), ToString() 등을 자동으로 생성해 줍니다.

 

 

좋다고 생각한 이유

처음에 소개했던 거처럼 "최소한의 변경으로 여러 곳에서 사용하면 좋지 않나?"라고 생각을 하여 처음에 "왜 좋은 걸 줄이려고 하지? "라는 의문이 있었습니다. 그런데 좀 더 알아보니 비슷한 형태로 여러 곳에서 반복적으로 사용하면 비효율적일 수 있겠구나라고 깨달았습니다.

 

 

 

 (좋다고 생각한 이유는  필자의 개인적인 생각입니다. 만약 잘못된 부분이 있을 시 알려주시면 감사하겠습니다.)