__JMY__
MY Devblog
__JMY__
전체 방문자
오늘
어제
  • 분류 전체보기 (52)
    • Dev (52)
      • Algorithm (6)
      • Linux (12)
      • Network (7)
      • Container (2)
      • Python (14)
      • Frontend (2)
      • Etc (9)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • tcpdump
  • Ingress
  • Tuple
  • flexbox
  • hikaricp
  • Sorting
  • Kubernetes
  • wget
  • hash
  • certificate
  • Python
  • react
  • network
  • Linux
  • frontend
  • SCP
  • springboot
  • flask
  • algorithm
  • Docker

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
__JMY__

MY Devblog

Dev/Etc

메소드 체이닝 (Method Chaining)

2019. 6. 28. 21:15

OOP에서 여러 메소드를 이어서 호출하는 문법입니다.

메소드가 객체(this)를 반환하여 여러 메소드를 순차적으로 선언할 수 있도록 합니다.

메소드 체이닝을 이용하면 코드가 간결해져 하나의 문장처럼 읽히게 할 수 있다는 장점이 있고 장기적으로는 유지보수에 도움이 됩니다.

예시

아래에 메소드 체이닝을 적용한 가상의 DBConnector 클래스를 구현하였습니다.

클래스 (DBConnector - Javascript)

class DBConnector {
    constructor(host, port, user, passwd) {
        this.host = host;
        this.port = port;
        this.user = user;
        this.passwd = passwd;
    }

    setHost(host) {
        this.host = host;
        return this;
    }

    setPort(port) {
        this.port = port;
        return this;
    }

    setUser(user) {
        this.user = user;
        return this;
    }

    setPasswd(passwd) {
        this.passwd = passwd;
        return this;
    }

    connect() {
        console.log('host: ' + this.host + '\n' +
                    'port: ' + this.port + '\n' +
                    'user: ' + this.user + '\n' +
                    'passwd: ' + this.passwd);
    }
}

메소드 체이닝을 적용하기 전

const dbc = new DBConnector();
dbc.setHost('127.0.0.1');
dbc.setPort('8080');
dbc.setUser('username');
dbc.setPasswd('passwd');
dbc.connect();

메소드 체이닝을 적용한 후

const dbc = new DBConnector().setHost('127.0.0.1').setPort('8080').setUser('username').setPasswd('passwd').connect();

메소드 체이닝을 적용한 후를 확인해보면 코드가 조금 더 간결해진 것을 확인할 수 있습니다.

그러나 이렇게 작성된 코드는 하나의 라인에 너무 많은 일이 일어날 수 있어 디버깅을 하기가 어렵다는 단점이 있습니다.

적절히 상황에 맞게 이용하는 것이 중요할 것입니다.

반응형

'Dev > Etc' 카테고리의 다른 글

자가 서명 인증서 생성  (0) 2020.03.03
정규표현식  (0) 2019.08.04
콘솔 창 없이 배치파일 실행하는 방법  (0) 2019.06.28
테스트 주도 개발 (TDD: Test Driven Development)  (0) 2019.06.28
WEB서버와 WAS 비교  (0) 2019.06.28
    'Dev/Etc' 카테고리의 다른 글
    • 정규표현식
    • 콘솔 창 없이 배치파일 실행하는 방법
    • 테스트 주도 개발 (TDD: Test Driven Development)
    • WEB서버와 WAS 비교
    __JMY__
    __JMY__
    공부내용 정리 블로그

    티스토리툴바