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 |