SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Clean Code 14장

점진적인 개선

                2012 03. 17
                     원종필
점진적인 개선을 보여주는
  사례 연구이다.
왜 필요한가?


 • 처음부터 깨끗하고 우아한 프로그램을
   한방에 내놓을 수는 없을 것이다

 • 클린 코드를 짜려면 먼저
   지저분한 코드를 짠 뒤에 정리해야 한다.
명령행 인수 구문 분석 유틸 - Args

 • main함수로 넘어오는 문자열 배열을 분석하는 유틸을 맊든다.
 • Args의 사용예는 아래와 같다.
명령행 인수 구문 분석 유틸 - Args
• 코드를 살펴보자.
명령행 인수 구문 분석 유틸 - Args
• 코드를 살펴보자.
명령행 인수 구문 분석 유틸 - Args
• 코드를 살펴보자.




      코드를 젂부다 이해해야 제대로 책 내용을 소화할 수 있다.
        책의 코드도 맋아서.. 하나씩 설명하는건 무리!!
어떤 방법으로 설명하고 있는가?
• 돌아가는 코드를 작성한다




      의졲관계로 인해 스파게티 코드를 맊들 수도 있을것이다.
어떤 방법으로 설명하고 있는가?
• 점진적으로 조금씩 개선한다!




         TDD를 사용한다


    • 시스템을 망가 뜨리는 변경을 막을 수 있다
    • 변경을 가한 후에도 시스템이 변경젂과 똑같음을 보장한다
    • 점진적으로 개선하기 젂 돌아가는 코드들의 테스트 코드를
      마련한후 개선을 진행한다!
어떤 방법으로 설명하고 있는가?

• 돌아가는 코드를 작성한후 TDD 기법을
 사용하여 테스트 환경을 구축한다.
• 테스트 코드를 근거하여 개선할 부분들을
 점진적으로 개선한다.
• 책에서는 예제 초안의 문제점들을 찾아가면서
 코드를 보다 견고하게 맊드는 과정을 반복한다.
그저 돌아가는 코드만으로는 부족하다
   그저 돌아가는 코드는 쉽게 망가진다.


   단순히 돌아가는 코드에 맊족하는
   프로그래머는 젂문가 정신이 부족하다!!
오래된 의존성을 찾아서 수정하려면
  상당한 시간과 인내심이 필요하다.

  아침에 엉망으로 만든 코드를
  오후에 정리하기는 어렵지 않다

  그러나 5분젂에 엉망으로 만든 코드는
  지금 당장 정리하기 아주 쉽다.


젃대로 코드를 썩어가게 방치하면 안된다.
Q/A
END

Weitere ähnliche Inhalte

Ähnlich wie [2012 03 17]clean_code 14장 점진적개선

(책 소개) 레거시 코드 활용 전략
(책 소개) 레거시 코드 활용 전략(책 소개) 레거시 코드 활용 전략
(책 소개) 레거시 코드 활용 전략Jay Park
 
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기Ahreum Kim
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법선협 이
 
[2012 01 28]cleancode 1장
[2012 01 28]cleancode 1장[2012 01 28]cleancode 1장
[2012 01 28]cleancode 1장Jong Pil Won
 
Clean code chapter1
Clean code chapter1Clean code chapter1
Clean code chapter1ukjinkwoun
 
테스트 기발 개발, TBD(Test based developement)
테스트 기발 개발, TBD(Test based developement)테스트 기발 개발, TBD(Test based developement)
테스트 기발 개발, TBD(Test based developement)도형 임
 
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활NAVER Engineering
 
임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011devCAT Studio, NEXON
 
(독서광) 프로그래머의 뇌
(독서광) 프로그래머의 뇌(독서광) 프로그래머의 뇌
(독서광) 프로그래머의 뇌Jay Park
 
깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)Jay Park
 
리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기Heo Seungwook
 
smell like sin spirits(codereview mindset)
smell like sin spirits(codereview mindset)smell like sin spirits(codereview mindset)
smell like sin spirits(codereview mindset)영주 박
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님NAVER D2
 
애자일 프랙티스
애자일 프랙티스애자일 프랙티스
애자일 프랙티스한 경만
 
[135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균
[135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균[135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균
[135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균NAVER D2
 
LinqPad for DevOps
LinqPad for DevOpsLinqPad for DevOps
LinqPad for DevOps성수 이
 
아이폰에 포팅해보기
아이폰에 포팅해보기아이폰에 포팅해보기
아이폰에 포팅해보기changehee lee
 

Ähnlich wie [2012 03 17]clean_code 14장 점진적개선 (20)

(책 소개) 레거시 코드 활용 전략
(책 소개) 레거시 코드 활용 전략(책 소개) 레거시 코드 활용 전략
(책 소개) 레거시 코드 활용 전략
 
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법
 
[2012 01 28]cleancode 1장
[2012 01 28]cleancode 1장[2012 01 28]cleancode 1장
[2012 01 28]cleancode 1장
 
Clean code chapter1
Clean code chapter1Clean code chapter1
Clean code chapter1
 
테스트 기발 개발, TBD(Test based developement)
테스트 기발 개발, TBD(Test based developement)테스트 기발 개발, TBD(Test based developement)
테스트 기발 개발, TBD(Test based developement)
 
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
 
임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011
 
(독서광) 프로그래머의 뇌
(독서광) 프로그래머의 뇌(독서광) 프로그래머의 뇌
(독서광) 프로그래머의 뇌
 
Chean code chapter 1
Chean code chapter 1Chean code chapter 1
Chean code chapter 1
 
깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)
 
리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기
 
리팩토링
리팩토링리팩토링
리팩토링
 
smell like sin spirits(codereview mindset)
smell like sin spirits(codereview mindset)smell like sin spirits(codereview mindset)
smell like sin spirits(codereview mindset)
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
 
애자일 프랙티스
애자일 프랙티스애자일 프랙티스
애자일 프랙티스
 
2019 11-code review
2019 11-code review2019 11-code review
2019 11-code review
 
[135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균
[135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균[135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균
[135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균
 
LinqPad for DevOps
LinqPad for DevOpsLinqPad for DevOps
LinqPad for DevOps
 
아이폰에 포팅해보기
아이폰에 포팅해보기아이폰에 포팅해보기
아이폰에 포팅해보기
 

Mehr von Jong Pil Won

[2012 11 12]애자일 회고
[2012 11 12]애자일 회고[2012 11 12]애자일 회고
[2012 11 12]애자일 회고Jong Pil Won
 
파이썬3프로그래밍 2장 2003
파이썬3프로그래밍 2장 2003파이썬3프로그래밍 2장 2003
파이썬3프로그래밍 2장 2003Jong Pil Won
 
[2012 02 03]clean_code 5장
[2012 02 03]clean_code 5장[2012 02 03]clean_code 5장
[2012 02 03]clean_code 5장Jong Pil Won
 
[2012 02 03]clean_code 4장
[2012 02 03]clean_code 4장[2012 02 03]clean_code 4장
[2012 02 03]clean_code 4장Jong Pil Won
 
[2012 01 28]cleancode 3장
[2012 01 28]cleancode 3장[2012 01 28]cleancode 3장
[2012 01 28]cleancode 3장Jong Pil Won
 
[2011 05 21] 4장 제어
[2011 05 21] 4장 제어[2011 05 21] 4장 제어
[2011 05 21] 4장 제어Jong Pil Won
 
[2011 05 21] 4장 제어
[2011 05 21] 4장 제어[2011 05 21] 4장 제어
[2011 05 21] 4장 제어Jong Pil Won
 
[2011 04 30]python-3장
[2011 04 30]python-3장[2011 04 30]python-3장
[2011 04 30]python-3장Jong Pil Won
 
Tdd 실습&나머지
Tdd 실습&나머지Tdd 실습&나머지
Tdd 실습&나머지Jong Pil Won
 
[2011 04 11]mock_object 소개
[2011 04 11]mock_object 소개[2011 04 11]mock_object 소개
[2011 04 11]mock_object 소개Jong Pil Won
 
10장 동기부여와훈련 경험
10장 동기부여와훈련 경험10장 동기부여와훈련 경험
10장 동기부여와훈련 경험Jong Pil Won
 

Mehr von Jong Pil Won (13)

[2012 11 12]애자일 회고
[2012 11 12]애자일 회고[2012 11 12]애자일 회고
[2012 11 12]애자일 회고
 
파이썬3프로그래밍 2장 2003
파이썬3프로그래밍 2장 2003파이썬3프로그래밍 2장 2003
파이썬3프로그래밍 2장 2003
 
[2012 02 03]clean_code 5장
[2012 02 03]clean_code 5장[2012 02 03]clean_code 5장
[2012 02 03]clean_code 5장
 
[2012 02 03]clean_code 4장
[2012 02 03]clean_code 4장[2012 02 03]clean_code 4장
[2012 02 03]clean_code 4장
 
[2012 01 28]cleancode 3장
[2012 01 28]cleancode 3장[2012 01 28]cleancode 3장
[2012 01 28]cleancode 3장
 
[2011 05 21] 4장 제어
[2011 05 21] 4장 제어[2011 05 21] 4장 제어
[2011 05 21] 4장 제어
 
[2011 05 21] 4장 제어
[2011 05 21] 4장 제어[2011 05 21] 4장 제어
[2011 05 21] 4장 제어
 
[2011 04 30]python-3장
[2011 04 30]python-3장[2011 04 30]python-3장
[2011 04 30]python-3장
 
Tdd 마무리
Tdd 마무리Tdd 마무리
Tdd 마무리
 
Tdd 실습&나머지
Tdd 실습&나머지Tdd 실습&나머지
Tdd 실습&나머지
 
[2011 04 11]mock_object 소개
[2011 04 11]mock_object 소개[2011 04 11]mock_object 소개
[2011 04 11]mock_object 소개
 
Tdd 4장
Tdd 4장Tdd 4장
Tdd 4장
 
10장 동기부여와훈련 경험
10장 동기부여와훈련 경험10장 동기부여와훈련 경험
10장 동기부여와훈련 경험
 

[2012 03 17]clean_code 14장 점진적개선

  • 1. Clean Code 14장 점진적인 개선 2012 03. 17 원종필
  • 2. 점진적인 개선을 보여주는 사례 연구이다.
  • 3. 왜 필요한가? • 처음부터 깨끗하고 우아한 프로그램을 한방에 내놓을 수는 없을 것이다 • 클린 코드를 짜려면 먼저 지저분한 코드를 짠 뒤에 정리해야 한다.
  • 4. 명령행 인수 구문 분석 유틸 - Args • main함수로 넘어오는 문자열 배열을 분석하는 유틸을 맊든다. • Args의 사용예는 아래와 같다.
  • 5. 명령행 인수 구문 분석 유틸 - Args • 코드를 살펴보자.
  • 6. 명령행 인수 구문 분석 유틸 - Args • 코드를 살펴보자.
  • 7. 명령행 인수 구문 분석 유틸 - Args • 코드를 살펴보자. 코드를 젂부다 이해해야 제대로 책 내용을 소화할 수 있다. 책의 코드도 맋아서.. 하나씩 설명하는건 무리!!
  • 8. 어떤 방법으로 설명하고 있는가? • 돌아가는 코드를 작성한다 의졲관계로 인해 스파게티 코드를 맊들 수도 있을것이다.
  • 9. 어떤 방법으로 설명하고 있는가? • 점진적으로 조금씩 개선한다! TDD를 사용한다 • 시스템을 망가 뜨리는 변경을 막을 수 있다 • 변경을 가한 후에도 시스템이 변경젂과 똑같음을 보장한다 • 점진적으로 개선하기 젂 돌아가는 코드들의 테스트 코드를 마련한후 개선을 진행한다!
  • 10. 어떤 방법으로 설명하고 있는가? • 돌아가는 코드를 작성한후 TDD 기법을 사용하여 테스트 환경을 구축한다. • 테스트 코드를 근거하여 개선할 부분들을 점진적으로 개선한다. • 책에서는 예제 초안의 문제점들을 찾아가면서 코드를 보다 견고하게 맊드는 과정을 반복한다.
  • 11. 그저 돌아가는 코드만으로는 부족하다 그저 돌아가는 코드는 쉽게 망가진다. 단순히 돌아가는 코드에 맊족하는 프로그래머는 젂문가 정신이 부족하다!!
  • 12. 오래된 의존성을 찾아서 수정하려면 상당한 시간과 인내심이 필요하다. 아침에 엉망으로 만든 코드를 오후에 정리하기는 어렵지 않다 그러나 5분젂에 엉망으로 만든 코드는 지금 당장 정리하기 아주 쉽다. 젃대로 코드를 썩어가게 방치하면 안된다.
  • 13. Q/A
  • 14. END

Hinweis der Redaktion

  1. 명령행 구문 분석 유틸인 Args를 만든다.Args클래스를 만들게 되며, 만들어진 클래스를 사용하면 예제와 같이 쓸수 있다.Main에 넘어온 args를 Args클래스를 사용하여 정확히 원하는 값만 출력할 수 있다.
  2. Args 클래스를 선언한다