Post

캡슐화로 코드 간결하게 만들기: 사내 게시판 연동 사례

과거의 사내 게시판 연동 코드의 문제가 뭘까 ?


이전에 사내 게시판과 연동되는 새로운 class 를 하나 만들었었다. 우리 플랫폼에 글이 하나 올라오면 사내 게시판으로 request 를 보내서 사내 게시판에도 올라오도록 하는 기능이다. 이때 새로 만든 class 안에는 다음과 같은 method 가 있었다.

1
2
3
4
5
6
7
8
9
10
public class CompanyBulletinBoardConnector {

	public boolean isCompanyBulletinBoardSpace (String spacename) {
		// 새로 올라온 글이 사내 게시판과 연동되는 space 인지 확인
	}

	public boolean requestToCompanyBulletinBoard (Post post) {
		// 사내 게시판으로 request
	}
}

모든 게시물이 사내 게시판으로 연동되는 것은 아니었기때문에 새로 올라온 글이 연동 되어야하는 space 의 글인지 확인하는 작업이 필요했다. 그리고 사내 게시판 쪽으로 요청을 보내는 코드가 필요했다. 그럼 이걸 사용하는 쪽에서는

1
2
3
if (isCompanyBulletinBoardSpace(post.getSpace())) {
	requestToCompanyBulletinBoard(post);
}

이렇게 if 문이 하나씩 필요하다. 그럼 사용하는 입장에서는 불편하다! 매번 사내 게시판과 연동하려고 할때마다 저 코드를 항상 모두 가져와야하고 indent 도 하나 생겨버린다…

캡슐화를 통해서 사용자가 편하게 사용 할 수 있게 하자


따라서 isCompanyBulletinBoardSpace 를 사용자는 볼 수 없도록 안으로 넣으려고 한다! 이것이 바로 encapsulation 이다! 그럼 아래와 같이 코드를 만들어 볼 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class CompanyBulletinBoardConnector {

    public boolean validateAndPostToCompanyBulletinBoard(Post post) {
        if (isCompanyBulletinBoardSpace(post.getSpace())) 
            return requestToCompanyBulletinBoard(post);
        return false;
    }

    private boolean isCompanyBulletinBoardSpace(String spacename) {
		// 새로 올라온 글이 사내 게시판과 연동되는 space 인지 확인
    }

    public boolean requestToCompanyBulletinBoard(Post post) {
        // 사내 게시판으로 request
    }
}

이렇게 만들면 사용자가 valid 한 space 인지 확인하고 request 하고 싶으면 validateAndPostToCompanyBulletinBoard 만 사용하면 되고 valid 필요없이 올리고 싶은 경우에는 requestToCompanyBulletinBoard 을 사용하면 된다! 두 경우 모두 단 한줄만 가져오면 해결이 된다!

훨씬 더 깔끔하게 사용자 입장에서 사내 게시판 연동을 추가 하기 쉽게 만들어 졌다!

This post is licensed under CC BY 4.0 by the author.

© 병욱. Some rights reserved.