티스토리 뷰



리팩토링 이란?


나쁜 디자인의 코드를 좋은 디자인 코드로 변경하는 과정





리팩토링 상황 예시


1. 아래와 같은 getUserInfoFromServerA() 라는 함수를 작성


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public void getUserInfoFromServerA(String userID) {
    new CustomAsyncTask().execute(userID,
                            new CallBackListenerA() {
                                @Override
                                public void onSuccess(Result rst) {
                                    // Success Code
                                }
                
                                @Override
                                public void onFailed(String failedMsg) {
                                    // Failed Code
                                }
                            });
}
 
class CustomAsyncTask extend AsyncTask<..........
cs



작성당시 개발자는 이번 한번만 연결할 예정이니 작업중인 Class 에 Inner Class 로 선언 후 서버 주소를 하드코딩하여 유저정보를 얻어왔다.



2. 며칠 뒤 getUserFriendFromServerB() 라는 함수 작성


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public void getUserFriendFromServerB(String userID) {
    new CustomAsyncTaskB().execute(userID,
                            new CallBackListenerB() {
                                @Override
                                public void onSuccess(Result rst) {
                                    // Success Code
                                }
                
                                @Override
                                public void onFailed(String failedMsg) {
                                    // Failed Code
                                }
                            });
}
 
class CustomAsyncTaskB extend AsyncTask<..........
cs



3. 중복된 코드에 대한 의심이 들기 시작함


4. CustomAsyncTask 에 Server Info 를 인자로 넘기고 Result 값을 Generic type T 로 받아 각 Callback Listener 에서 변환후 이용


5. 코드 감량!!



위와 같은 과정을 거치는 것을 리팩토링이라고 함.







공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함