SlideShare a Scribd company logo
1 of 30
Download to read offline
Inline Class
  Hide Delegate
Remove Middle man
          charsyam@naver.com
Inline Class
Opposite
Extract Class
별일 없는 클래스는 그냥
다른 클래스와 합치자!
1. 어느 클래스를 어디로 집어
    넣을지 결정한다.
TelephoneNumber Class 를 Person 클래스로 집어넣
기로 결정한다. TelephoneNumber 클래스를 Person에
서만 사용하고 다른 곳에서는 쓰지 않기 때문이다.
2. 소스에서 선택된 클래스
로 참조하는 부분을 이동할 클
    래스로 변경한다.
3. Build & Test
당연히 실패한다.
4. Move Method,
Move Field 등으로 함수와
    필드를 옮긴다.
3,4 번을
계속 반복한다.
Hide Delegate
Opposite
Remove Middle Man
Encapsulation 을 위해서, 주요 처리하는 클래스를 외부에
서 보지 못하도록 한다.
1. Delegate 에 있는
Method 를 Server 로 옮
         깁니다.
2. Client 는 Server 를
호출 하도록 변경합니다.
3. BUILD & TEST
4. 더 이상 Client 에서
delegate 코드를 사용하지 않으
면 Server에서 Delegate를 주
     는 부분을 제거한다.
Remove Middle Man
Opposite
Hide Delegate
거의 모든 기능을 Delegate 에서만 처리하는 클래스가
Middle Man 이 되어버린다.

이를 제거하는 방법이 Remove Middle Man 이다.
1. Delegate 를 던져주는
  Accessor 를 만든다.
2. Client 에서 사용하는
method 를 delegate 를
  사용하도록 변경한다.
3. BUILD & TEST
Q&A
Thank
 You

More Related Content

Viewers also liked

모바일 환경에 대한 이해와 네이버의 방향
모바일 환경에 대한 이해와 네이버의 방향모바일 환경에 대한 이해와 네이버의 방향
모바일 환경에 대한 이해와 네이버의 방향Seungyul Kim
 
Selenium and XpressEngine
Selenium and XpressEngineSelenium and XpressEngine
Selenium and XpressEngineSol Kim
 
Selenium for-ui-test
Selenium for-ui-testSelenium for-ui-test
Selenium for-ui-test승훈 오
 
Random 111203223949-phpapp02
Random 111203223949-phpapp02Random 111203223949-phpapp02
Random 111203223949-phpapp02DaeMyung Kang
 
Better softwareengineer han
Better softwareengineer hanBetter softwareengineer han
Better softwareengineer hanDaeMyung Kang
 
LinqPad for DevOps
LinqPad for DevOpsLinqPad for DevOps
LinqPad for DevOps성수 이
 
이슈관리 및 브랜치관리
이슈관리 및 브랜치관리이슈관리 및 브랜치관리
이슈관리 및 브랜치관리Yoonsung Jung
 
Refactoring-ch7 moving feature btw objects
Refactoring-ch7 moving feature btw objectsRefactoring-ch7 moving feature btw objects
Refactoring-ch7 moving feature btw objectsfungfung Chen
 
Troubleshooting redis
Troubleshooting redisTroubleshooting redis
Troubleshooting redisDaeMyung Kang
 
Github를 이용한 협동개발 20141001
Github를 이용한 협동개발 20141001Github를 이용한 협동개발 20141001
Github를 이용한 협동개발 20141001BJ Jang
 
[2011 1-2]lotte
[2011 1-2]lotte[2011 1-2]lotte
[2011 1-2]lottenceo
 
아키텍트가 알아야 할 12/97가지
아키텍트가 알아야 할 12/97가지아키텍트가 알아야 할 12/97가지
아키텍트가 알아야 할 12/97가지YoungSu Son
 
[SMLab] 카카오 채널 서비스운영 가이드_201409
[SMLab] 카카오 채널 서비스운영 가이드_201409[SMLab] 카카오 채널 서비스운영 가이드_201409
[SMLab] 카카오 채널 서비스운영 가이드_201409smlabcomm
 
robot.txt와 meta tag를 이용한 크롤링 설정
robot.txt와 meta tag를 이용한 크롤링 설정robot.txt와 meta tag를 이용한 크롤링 설정
robot.txt와 meta tag를 이용한 크롤링 설정Yoonsung Jung
 
Issue-WIKI 기반의 프로젝트 협업 시스템
Issue-WIKI 기반의 프로젝트 협업 시스템Issue-WIKI 기반의 프로젝트 협업 시스템
Issue-WIKI 기반의 프로젝트 협업 시스템Peter Kim
 
E1_Deview nhn애자일개발 ci
E1_Deview nhn애자일개발 ciE1_Deview nhn애자일개발 ci
E1_Deview nhn애자일개발 ciNAVER D2
 
20150113 secret chef ver03
20150113 secret chef ver0320150113 secret chef ver03
20150113 secret chef ver03Eun Suk Lee
 

Viewers also liked (20)

모바일 환경에 대한 이해와 네이버의 방향
모바일 환경에 대한 이해와 네이버의 방향모바일 환경에 대한 이해와 네이버의 방향
모바일 환경에 대한 이해와 네이버의 방향
 
Selenium and XpressEngine
Selenium and XpressEngineSelenium and XpressEngine
Selenium and XpressEngine
 
Selenium for-ui-test
Selenium for-ui-testSelenium for-ui-test
Selenium for-ui-test
 
Python andselenium
Python andseleniumPython andselenium
Python andselenium
 
Soscon lt 1
Soscon lt 1Soscon lt 1
Soscon lt 1
 
Random 111203223949-phpapp02
Random 111203223949-phpapp02Random 111203223949-phpapp02
Random 111203223949-phpapp02
 
Git flow
Git flowGit flow
Git flow
 
Better softwareengineer han
Better softwareengineer hanBetter softwareengineer han
Better softwareengineer han
 
LinqPad for DevOps
LinqPad for DevOpsLinqPad for DevOps
LinqPad for DevOps
 
이슈관리 및 브랜치관리
이슈관리 및 브랜치관리이슈관리 및 브랜치관리
이슈관리 및 브랜치관리
 
Refactoring-ch7 moving feature btw objects
Refactoring-ch7 moving feature btw objectsRefactoring-ch7 moving feature btw objects
Refactoring-ch7 moving feature btw objects
 
Troubleshooting redis
Troubleshooting redisTroubleshooting redis
Troubleshooting redis
 
Github를 이용한 협동개발 20141001
Github를 이용한 협동개발 20141001Github를 이용한 협동개발 20141001
Github를 이용한 협동개발 20141001
 
[2011 1-2]lotte
[2011 1-2]lotte[2011 1-2]lotte
[2011 1-2]lotte
 
아키텍트가 알아야 할 12/97가지
아키텍트가 알아야 할 12/97가지아키텍트가 알아야 할 12/97가지
아키텍트가 알아야 할 12/97가지
 
[SMLab] 카카오 채널 서비스운영 가이드_201409
[SMLab] 카카오 채널 서비스운영 가이드_201409[SMLab] 카카오 채널 서비스운영 가이드_201409
[SMLab] 카카오 채널 서비스운영 가이드_201409
 
robot.txt와 meta tag를 이용한 크롤링 설정
robot.txt와 meta tag를 이용한 크롤링 설정robot.txt와 meta tag를 이용한 크롤링 설정
robot.txt와 meta tag를 이용한 크롤링 설정
 
Issue-WIKI 기반의 프로젝트 협업 시스템
Issue-WIKI 기반의 프로젝트 협업 시스템Issue-WIKI 기반의 프로젝트 협업 시스템
Issue-WIKI 기반의 프로젝트 협업 시스템
 
E1_Deview nhn애자일개발 ci
E1_Deview nhn애자일개발 ciE1_Deview nhn애자일개발 ci
E1_Deview nhn애자일개발 ci
 
20150113 secret chef ver03
20150113 secret chef ver0320150113 secret chef ver03
20150113 secret chef ver03
 

More from DaeMyung Kang

How to use redis well
How to use redis wellHow to use redis well
How to use redis wellDaeMyung Kang
 
The easiest consistent hashing
The easiest consistent hashingThe easiest consistent hashing
The easiest consistent hashingDaeMyung Kang
 
How to name a cache key
How to name a cache keyHow to name a cache key
How to name a cache keyDaeMyung Kang
 
Integration between Filebeat and logstash
Integration between Filebeat and logstash Integration between Filebeat and logstash
Integration between Filebeat and logstash DaeMyung Kang
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advanceDaeMyung Kang
 
Massive service basic
Massive service basicMassive service basic
Massive service basicDaeMyung Kang
 
Data Engineering 101
Data Engineering 101Data Engineering 101
Data Engineering 101DaeMyung Kang
 
How To Become Better Engineer
How To Become Better EngineerHow To Become Better Engineer
How To Become Better EngineerDaeMyung Kang
 
Kafka timestamp offset_final
Kafka timestamp offset_finalKafka timestamp offset_final
Kafka timestamp offset_finalDaeMyung Kang
 
Kafka timestamp offset
Kafka timestamp offsetKafka timestamp offset
Kafka timestamp offsetDaeMyung Kang
 
Data pipeline and data lake
Data pipeline and data lakeData pipeline and data lake
Data pipeline and data lakeDaeMyung Kang
 
webservice scaling for newbie
webservice scaling for newbiewebservice scaling for newbie
webservice scaling for newbieDaeMyung Kang
 

More from DaeMyung Kang (20)

Count min sketch
Count min sketchCount min sketch
Count min sketch
 
Redis
RedisRedis
Redis
 
Ansible
AnsibleAnsible
Ansible
 
Why GUID is needed
Why GUID is neededWhy GUID is needed
Why GUID is needed
 
How to use redis well
How to use redis wellHow to use redis well
How to use redis well
 
The easiest consistent hashing
The easiest consistent hashingThe easiest consistent hashing
The easiest consistent hashing
 
How to name a cache key
How to name a cache keyHow to name a cache key
How to name a cache key
 
Integration between Filebeat and logstash
Integration between Filebeat and logstash Integration between Filebeat and logstash
Integration between Filebeat and logstash
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advance
 
Massive service basic
Massive service basicMassive service basic
Massive service basic
 
Data Engineering 101
Data Engineering 101Data Engineering 101
Data Engineering 101
 
How To Become Better Engineer
How To Become Better EngineerHow To Become Better Engineer
How To Become Better Engineer
 
Kafka timestamp offset_final
Kafka timestamp offset_finalKafka timestamp offset_final
Kafka timestamp offset_final
 
Kafka timestamp offset
Kafka timestamp offsetKafka timestamp offset
Kafka timestamp offset
 
Data pipeline and data lake
Data pipeline and data lakeData pipeline and data lake
Data pipeline and data lake
 
Redis acl
Redis aclRedis acl
Redis acl
 
Coffee store
Coffee storeCoffee store
Coffee store
 
Scalable webservice
Scalable webserviceScalable webservice
Scalable webservice
 
Number system
Number systemNumber system
Number system
 
webservice scaling for newbie
webservice scaling for newbiewebservice scaling for newbie
webservice scaling for newbie
 

Refactoring(inline class, Hide delegate, remove middle man)