SlideShare ist ein Scribd-Unternehmen logo
1 von 88
더 나은 코드 작성을 위한

     리팩토링




                 1	
  
학습목표

-
 응용
 애플리케이션
 작성시
 만들어지는
 나쁜
 코드들을
 구별할
 수
 있다.
 
-
 나쁜
 코드를
 객체지향
 설계가
 적용된
 코드로
 변경하는
 기법을
 배우고
 적용할
 수
 
 있다.
-
 실제
 코드에서
 잘못된
 부분을
 찾아내
 이해하기
 쉬운
 구조로
 변경할
 수
 있다.
 




                                                                                                                                                                                                                                                                                                                                                                                                                                                                    2	
  
                                                                                                                                                                                                                                                                                                                                                                                                                                                                디자인패턴
 	
  	
  	
  	
  1. 코드개선


          1.  객체지향 특징

          2.  코드 개선 [실습]




                                  3	
  
                              디자인패턴
1.객체지향 특징




            4	
  
추상화 Abstraction
                  객체지향 특징




                                                    주어진 문제나 시스템 중에서
                                                    중요하고 관계 있는 부분만
                                                    을 분리하여 간결하고
                                                    이해하기 쉽게 만드는 작업




                                                                            5	
  
상속 Inheritance
                객체지향 특징




                                                   직접 구현하지 않고 부모 클
                                                   래스로부터 물려받은 기능
                                                   이나 데이터를 말하며 재사
                                                   용을 위한 보편적인 기법




                                                                     6	
  
캡슐화 Capsulation
                객체지향 특징




                                                    외부와 통신할 때의 복잡도를
                                                    줄이고, 내부 상태를 보호
                                                    하기 위해 만들어 놓은 구조




                                                                          7	
  
다형성 Polymorphism
                              객체지향 특징




      polymorphism
               하나의 선언으로 여러 개의


    多形性
                          타입을 가질 수 있는 것. 혹은
                                                                  자신이 여러 타입을 가지는
                                                                  것을 지칭
                         TYPE
 

                                                                                      8	
  
2. 코드 개선
   [실습]




           9	
  
 	
  	
  	
  	
  2. 리팩터링이란?


        1.  프로젝트
 인
 더
 월드
 

        2.  리팩터링이란?
 

        3.  테스트
 코드
 

        4.  리팩터링과
 설계
 

        5.  코드
 속의
 나쁜
 냄새
 



                                                                                                                                                                 10	
  
                                                                                                                                                               리팩터링
 
1. 프로젝트 인 더 월드
 Project in the world




                        11	
  
프로젝트 In IDEAL                                                                                                                                                                                                                                                                                              Project
 in
 the
 world
 



 § 
 확정되어
 변경되지
 않는
 고객의
 요구
 사항
 

 § 
 빈틈없는
 시스템
 설계
 

 § 
 숙련되고
 표준을
 따르기를
 즐기는
 개발자

Weitere ähnliche Inhalte

Andere mochten auch

study refactoring
study refactoringstudy refactoring
study refactoring재원 최
 
Bnf seeg ws
Bnf seeg wsBnf seeg ws
Bnf seeg wsbbongcsu
 
The roadtocodecraft
The roadtocodecraftThe roadtocodecraft
The roadtocodecraftbbongcsu
 
실패한 프로젝트들의 개발문화_개발방법론
실패한 프로젝트들의 개발문화_개발방법론실패한 프로젝트들의 개발문화_개발방법론
실패한 프로젝트들의 개발문화_개발방법론Suwon Chae
 
Big refactoring #12
Big refactoring #12Big refactoring #12
Big refactoring #12Jay Kim
 
OPEN Forum: Women Business Owners
OPEN Forum: Women Business OwnersOPEN Forum: Women Business Owners
OPEN Forum: Women Business OwnersRashmi Sinha
 
Clean code
Clean codeClean code
Clean codebbongcsu
 
TDD&Refactoring Day 02: TDD
TDD&Refactoring Day 02: TDDTDD&Refactoring Day 02: TDD
TDD&Refactoring Day 02: TDDSuwon Chae
 
Refactoring #7
Refactoring #7Refactoring #7
Refactoring #7Jay Kim
 
Mongo db로 배우는 nosql
Mongo db로 배우는 nosqlMongo db로 배우는 nosql
Mongo db로 배우는 nosqlSuwon Chae
 
Refactoring -chapter 7,8-
Refactoring -chapter 7,8-Refactoring -chapter 7,8-
Refactoring -chapter 7,8-Kwang Jung Kim
 
Refactoring tutorial
Refactoring tutorialRefactoring tutorial
Refactoring tutorialBingu Shim
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationDonghyun Seo
 
refactoring database
refactoring databaserefactoring database
refactoring database기룡 남
 
[235]루빅스개발이야기 황지수
[235]루빅스개발이야기 황지수[235]루빅스개발이야기 황지수
[235]루빅스개발이야기 황지수NAVER D2
 
리팩토링 (Refactoring)
리팩토링 (Refactoring)리팩토링 (Refactoring)
리팩토링 (Refactoring)Ashal aka JOKER
 
Refactoring tutorial 1주차[refactoring 개요]
Refactoring tutorial 1주차[refactoring 개요]Refactoring tutorial 1주차[refactoring 개요]
Refactoring tutorial 1주차[refactoring 개요]bbongcsu
 
Refactoring(inline class, Hide delegate, remove middle man)
Refactoring(inline class, Hide delegate, remove middle man)Refactoring(inline class, Hide delegate, remove middle man)
Refactoring(inline class, Hide delegate, remove middle man)DaeMyung Kang
 
스프링 프로젝트 시작하기
스프링 프로젝트 시작하기스프링 프로젝트 시작하기
스프링 프로젝트 시작하기Ashal aka JOKER
 

Andere mochten auch (20)

study refactoring
study refactoringstudy refactoring
study refactoring
 
Bnf seeg ws
Bnf seeg wsBnf seeg ws
Bnf seeg ws
 
The roadtocodecraft
The roadtocodecraftThe roadtocodecraft
The roadtocodecraft
 
실패한 프로젝트들의 개발문화_개발방법론
실패한 프로젝트들의 개발문화_개발방법론실패한 프로젝트들의 개발문화_개발방법론
실패한 프로젝트들의 개발문화_개발방법론
 
Big refactoring #12
Big refactoring #12Big refactoring #12
Big refactoring #12
 
OPEN Forum: Women Business Owners
OPEN Forum: Women Business OwnersOPEN Forum: Women Business Owners
OPEN Forum: Women Business Owners
 
Working with code
Working with codeWorking with code
Working with code
 
Clean code
Clean codeClean code
Clean code
 
TDD&Refactoring Day 02: TDD
TDD&Refactoring Day 02: TDDTDD&Refactoring Day 02: TDD
TDD&Refactoring Day 02: TDD
 
Refactoring #7
Refactoring #7Refactoring #7
Refactoring #7
 
Mongo db로 배우는 nosql
Mongo db로 배우는 nosqlMongo db로 배우는 nosql
Mongo db로 배우는 nosql
 
Refactoring -chapter 7,8-
Refactoring -chapter 7,8-Refactoring -chapter 7,8-
Refactoring -chapter 7,8-
 
Refactoring tutorial
Refactoring tutorialRefactoring tutorial
Refactoring tutorial
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
refactoring database
refactoring databaserefactoring database
refactoring database
 
[235]루빅스개발이야기 황지수
[235]루빅스개발이야기 황지수[235]루빅스개발이야기 황지수
[235]루빅스개발이야기 황지수
 
리팩토링 (Refactoring)
리팩토링 (Refactoring)리팩토링 (Refactoring)
리팩토링 (Refactoring)
 
Refactoring tutorial 1주차[refactoring 개요]
Refactoring tutorial 1주차[refactoring 개요]Refactoring tutorial 1주차[refactoring 개요]
Refactoring tutorial 1주차[refactoring 개요]
 
Refactoring(inline class, Hide delegate, remove middle man)
Refactoring(inline class, Hide delegate, remove middle man)Refactoring(inline class, Hide delegate, remove middle man)
Refactoring(inline class, Hide delegate, remove middle man)
 
스프링 프로젝트 시작하기
스프링 프로젝트 시작하기스프링 프로젝트 시작하기
스프링 프로젝트 시작하기
 

Ähnlich wie Refactoring

Project Design Seminar
Project Design SeminarProject Design Seminar
Project Design SeminarTack-geun You
 
번역돋보기 기획서
번역돋보기 기획서번역돋보기 기획서
번역돋보기 기획서Sangon Lee
 
Asia bootcamp devclan
Asia bootcamp devclanAsia bootcamp devclan
Asia bootcamp devclanLee Jungpyo
 
토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.Pptx토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.PptxMyeongin Woo
 
EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다이상한모임
 
How to implement your dream 20150427
How to implement your dream 20150427How to implement your dream 20150427
How to implement your dream 20150427Will Kim
 
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서Jeongmin Cha
 
브랜디드어플리케이션 소개자료 1_2(100512)
브랜디드어플리케이션 소개자료 1_2(100512)브랜디드어플리케이션 소개자료 1_2(100512)
브랜디드어플리케이션 소개자료 1_2(100512)ideaguide
 
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵NAVER Engineering
 
develop android app using intellij
develop android app using intellijdevelop android app using intellij
develop android app using intellijSewon Ann
 
Android Developer JeongJaeyun
Android Developer JeongJaeyunAndroid Developer JeongJaeyun
Android Developer JeongJaeyunjaeyunjeong1
 
Enterprise Knowledge Management And Emerging Technologies
Enterprise Knowledge Management And Emerging TechnologiesEnterprise Knowledge Management And Emerging Technologies
Enterprise Knowledge Management And Emerging Technologiescalcutta
 
개발자 리서치 활동강화 방안 180109
개발자 리서치 활동강화 방안 180109개발자 리서치 활동강화 방안 180109
개발자 리서치 활동강화 방안 180109한 경만
 
개발자, 성장하는 '척' 말고, 진짜 성장하기
개발자, 성장하는 '척' 말고, 진짜 성장하기개발자, 성장하는 '척' 말고, 진짜 성장하기
개발자, 성장하는 '척' 말고, 진짜 성장하기Donghyun Cho
 
[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다
[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다
[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다CONNECT FOUNDATION
 
데스크탑 개발자에서 앱 개발자로 성공하기 1부(총 3부)
데스크탑 개발자에서 앱 개발자로 성공하기 1부(총 3부)데스크탑 개발자에서 앱 개발자로 성공하기 1부(총 3부)
데스크탑 개발자에서 앱 개발자로 성공하기 1부(총 3부)mosaicnet
 
퍼스널클라우드 서비스 론칭 제안서
퍼스널클라우드 서비스 론칭 제안서퍼스널클라우드 서비스 론칭 제안서
퍼스널클라우드 서비스 론칭 제안서Sangkyu Kim
 

Ähnlich wie Refactoring (20)

Ddd ch12-13
Ddd ch12-13Ddd ch12-13
Ddd ch12-13
 
Project Design Seminar
Project Design SeminarProject Design Seminar
Project Design Seminar
 
번역돋보기 기획서
번역돋보기 기획서번역돋보기 기획서
번역돋보기 기획서
 
StudyShare
StudyShareStudyShare
StudyShare
 
Asia bootcamp devclan
Asia bootcamp devclanAsia bootcamp devclan
Asia bootcamp devclan
 
토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.Pptx토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.Pptx
 
EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다
 
How to implement your dream 20150427
How to implement your dream 20150427How to implement your dream 20150427
How to implement your dream 20150427
 
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
 
브랜디드어플리케이션 소개자료 1_2(100512)
브랜디드어플리케이션 소개자료 1_2(100512)브랜디드어플리케이션 소개자료 1_2(100512)
브랜디드어플리케이션 소개자료 1_2(100512)
 
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
 
develop android app using intellij
develop android app using intellijdevelop android app using intellij
develop android app using intellij
 
Android Developer JeongJaeyun
Android Developer JeongJaeyunAndroid Developer JeongJaeyun
Android Developer JeongJaeyun
 
Enterprise Knowledge Management And Emerging Technologies
Enterprise Knowledge Management And Emerging TechnologiesEnterprise Knowledge Management And Emerging Technologies
Enterprise Knowledge Management And Emerging Technologies
 
개발자 리서치 활동강화 방안 180109
개발자 리서치 활동강화 방안 180109개발자 리서치 활동강화 방안 180109
개발자 리서치 활동강화 방안 180109
 
개발자, 성장하는 '척' 말고, 진짜 성장하기
개발자, 성장하는 '척' 말고, 진짜 성장하기개발자, 성장하는 '척' 말고, 진짜 성장하기
개발자, 성장하는 '척' 말고, 진짜 성장하기
 
[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다
[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다
[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다
 
데스크탑 개발자에서 앱 개발자로 성공하기 1부(총 3부)
데스크탑 개발자에서 앱 개발자로 성공하기 1부(총 3부)데스크탑 개발자에서 앱 개발자로 성공하기 1부(총 3부)
데스크탑 개발자에서 앱 개발자로 성공하기 1부(총 3부)
 
퍼스널클라우드 서비스 론칭 제안서
퍼스널클라우드 서비스 론칭 제안서퍼스널클라우드 서비스 론칭 제안서
퍼스널클라우드 서비스 론칭 제안서
 
애자일의 모든것
애자일의 모든것애자일의 모든것
애자일의 모든것
 

Refactoring