메서드 체이닝(Method Chaining)과 return this; 이해하기

coldrice99·2024년 9월 5일
0

이번 TIL에서는 자바의 메서드 체이닝return this;의 개념을 알아보고, 이를 통해 코드를 간결하게 작성하는 방법을 공유하려 한다. 사실 처음에 return this;라는 코드가 무엇을 의미하는지 이해가 가지 않았다. 그래서 찾아보니, 이 코드는 메서드 체이닝이라는 개념과 연결되어 있었고, 이를 통해 여러 메서드를 연속해서 호출할 수 있다는 사실을 알게 되었다.


1. 메서드 체이닝(Method Chaining)이란?

메서드 체이닝은 한 객체의 여러 메서드를 연속해서 호출할 수 있게 하는 프로그래밍 방식이다. 즉, 메서드를 호출할 때마다 그 메서드가 현재 객체를 반환함으로써 다른 메서드를 바로 이어서 호출할 수 있다. 이를 통해 코드가 간결해지고, 여러 줄의 코드를 한 줄로 묶을 수 있다.

메서드 체이닝이 없는 경우:

public class Calculator {
    private int firstNumber;
    private int secondNumber;

    // 첫 번째 숫자를 설정하는 메서드
    public void setFirstNumber(int firstNumber) {
        this.firstNumber = firstNumber;
    }

    // 두 번째 숫자를 설정하는 메서드
    public void setSecondNumber(int secondNumber) {
        this.secondNumber = secondNumber;
    }

    // 두 숫자를 더하는 메서드
    public int add() {
        return firstNumber + secondNumber;
    }
}

public class Main {
    public static void main(String[] args) {
        Calculator calc = new Calculator();

        // 메서드를 각각 따로 호출해야 함
        calc.setFirstNumber(10);
        calc.setSecondNumber(20);
        int result = calc.add();

        System.out.println(result); // 30 출력
    }
}

문제점:

  • 매번 메서드를 호출할 때마다, 새로운 줄로 작성해야 한다.
  • 코드가 지저분하고 길어질 수 있다.

메서드 체이닝이 있는 경우:

public class Calculator {
    private int firstNumber;
    private int secondNumber;

    // 첫 번째 숫자를 설정하는 메서드
    public Calculator setFirstNumber(int firstNumber) {
        this.firstNumber = firstNumber;
        return this; // 현재 객체를 반환
    }

    // 두 번째 숫자를 설정하는 메서드
    public Calculator setSecondNumber(int secondNumber) {
        this.secondNumber = secondNumber;
        return this; // 현재 객체를 반환
    }

    // 두 숫자를 더하는 메서드
    public int add() {
        return firstNumber + secondNumber;
    }
}

public class Main {
    public static void main(String[] args) {
        Calculator calc = new Calculator();

        // 메서드 체이닝을 사용해 메서드를 연속해서 호출 가능
        int result = calc.setFirstNumber(10)
                         .setSecondNumber(20)
                         .add();

        System.out.println(result); // 30 출력
    }
}

2. return this;의 역할

return this;현재 객체 자신을 반환하는 역할을 한다. 메서드 체이닝을 가능하게 하는 핵심 개념으로, 호출된 메서드가 자신의 객체를 반환하여 다음 메서드를 바로 호출할 수 있게 해준다.

예시 설명:

  • setFirstNumber() 메서드는 this를 반환하여 현재 Calculator 객체를 반환하고, 이를 통해 바로 setSecondNumber()를 호출할 수 있게 된다.
  • 마찬가지로, setSecondNumber()this를 반환하여 add() 메서드를 호출할 수 있게 한다.

3. 메서드 체이닝의 장점

  1. 코드 간결화: 여러 메서드를 한 줄로 연결하여 호출할 수 있어, 코드가 짧고 읽기 쉽게 변한다.
  2. 가독성 향상: 객체의 여러 상태를 변경하는 메서드를 연속해서 호출함으로써 직관적인 코드 작성을 할 수 있다.

결론

메서드 체이닝return this;를 사용하면 코드가 더 간결하고 가독성이 좋아진다. 이는 특히 객체의 상태를 여러 번 변경하거나 여러 메서드를 순차적으로 호출할 때 유용하다. 이를 통해 객체지향 프로그래밍의 장점을 극대화할 수 있으며, 보다 직관적인 코드를 작성할 수 있다.


profile
서두르지 않으나 쉬지 않고

0개의 댓글