SlideShare a Scribd company logo
1 of 10
시작하기 전에
책을 읽는 방법
• 심심풀이로 읽어보는 ‘기분 좋은’ 책이 아니라
  열심히, 아주 열심히 파고들어야 하는 책이다

• 책은 세 부분으로 구성되어있다.
   • 첫번째 : 클린 코드를 작성하는 원칙,패턴,실기 설명
   • 두번째 : 사례 연구를 통해 문제가 있는 코드를 문제가
          적은 코드로 바꾸는 연습
   • 세법째 : 결말. 사례를 통해 수집한 냄새와 발견법을 열거
Clean Code


1장 클린 코드

             2012 01. 28
                 원종필
• 기능을 추가할 수록 코드는 엉망이 되고..
• 급해서 서두르고..
• 제대로 짤 시간이 없어서 코드를 다듬지 못하고..
• 안 돌아가는 프로그램보다 돌아가는 쓰레기가 낫다고
 스스로를 위로하고 나중에 정리하겠다고 다짐..
• 하지만 나중은 결코 오지 않는다.
이게 다 이것때문!!


  나쁜 코드
나쁜 코드
• 나쁜 코드가 쌓일 수록 생산성은 떨어진다
• 기능을 추가보다 추가로 인한 변경 처리가 더 오래걸린다
• 나쁜 코드가 만들어지는 원인은?
   • 일정이 충분하지 못해서?
   • 요구 사항이 변경되어서?
• 좋은 코드를 사수하는 일은 프로그래머들의 책임이다
• 나쁜코드를 양산하면 나쁜코드로 인해
  속력이 늦어져서 기한을 놓친다
• 기한을 맞추는 유일한 방법은 언제나
  코드를 깨끗하게 유지하는 습관이다
클린 코드
• 우아하고 효율적인 코드
 – 비야네 스트롭스트룹(Bjarne Stroustrup)

• 클린 코드는 잘 쓴 문장처럼 읽힌다
 – 그래디 부치(Grady Booch)

• 작성자가 아닌 사람도 읽기 쉽고 고치기 쉽다
 - 데이브 토마스(Dave Thomas)

• 언제나 누군가 주의 깊게 짰다는 느낌을 준다
 고치려고 살펴봐도 딱히 손댈 곳이 없다
 – 마이클 페더(Michaael Feather)

• 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행되는 코드
 - 워드 커닝엄(Ward Cunningham)
클린 코드
• 코드를 읽는 시간 대 코드를 짜는 시간의 비율은 10:1을 넘는다
• 새 코드를 짜면서 끊임없이 기존 코드를 읽는다
• 읽기 쉬운 코드가 매우 중요
• 코드를 잘 짰다고 전부가 아니다
  • 시간이 지나도 언제나 깨끗하게 유지해야 한다
  • 저장소에서 받았을때보다 좀더 클린 코드를
   저장소에 올린다면 코드는 절대로 나빠지지 않는다
  • 한꺼번에 많은 시간을 투자해서 정리하지 말고
   변수 이름 하나 개선, if문 정리.. 간단히 해라.
Q/A
끝.

More Related Content

Viewers also liked

[2012 01 28]cleancode 3장
[2012 01 28]cleancode 3장[2012 01 28]cleancode 3장
[2012 01 28]cleancode 3장Jong Pil Won
 
Aws ses 이메일 보내기 받기 송신 수신
Aws ses 이메일 보내기 받기 송신 수신Aws ses 이메일 보내기 받기 송신 수신
Aws ses 이메일 보내기 받기 송신 수신라한사 아
 
Ch10.애플리케이션 서버의 병목_발견_방법
Ch10.애플리케이션 서버의 병목_발견_방법Ch10.애플리케이션 서버의 병목_발견_방법
Ch10.애플리케이션 서버의 병목_발견_방법Minchul Jung
 
람다아키텍처
람다아키텍처람다아키텍처
람다아키텍처HyeonSeok Choi
 
JVM과 톰캣 튜닝
JVM과 톰캣 튜닝JVM과 톰캣 튜닝
JVM과 톰캣 튜닝Mungyu Choi
 
Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1Minchul Jung
 
신림프로그래머 스터디 웹팩 발표자료
신림프로그래머 스터디 웹팩 발표자료신림프로그래머 스터디 웹팩 발표자료
신림프로그래머 스터디 웹팩 발표자료라한사 아
 

Viewers also liked (8)

[2012 01 28]cleancode 3장
[2012 01 28]cleancode 3장[2012 01 28]cleancode 3장
[2012 01 28]cleancode 3장
 
Aws ses 이메일 보내기 받기 송신 수신
Aws ses 이메일 보내기 받기 송신 수신Aws ses 이메일 보내기 받기 송신 수신
Aws ses 이메일 보내기 받기 송신 수신
 
Ch10.애플리케이션 서버의 병목_발견_방법
Ch10.애플리케이션 서버의 병목_발견_방법Ch10.애플리케이션 서버의 병목_발견_방법
Ch10.애플리케이션 서버의 병목_발견_방법
 
람다아키텍처
람다아키텍처람다아키텍처
람다아키텍처
 
Chean code chapter 1
Chean code chapter 1Chean code chapter 1
Chean code chapter 1
 
JVM과 톰캣 튜닝
JVM과 톰캣 튜닝JVM과 톰캣 튜닝
JVM과 톰캣 튜닝
 
Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1
 
신림프로그래머 스터디 웹팩 발표자료
신림프로그래머 스터디 웹팩 발표자료신림프로그래머 스터디 웹팩 발표자료
신림프로그래머 스터디 웹팩 발표자료
 

Similar to [2012 01 28]cleancode 1장

[2012 03 17]clean_code 14장 점진적개선
[2012 03 17]clean_code 14장 점진적개선[2012 03 17]clean_code 14장 점진적개선
[2012 03 17]clean_code 14장 점진적개선Jong Pil Won
 
Clean code chapter1
Clean code chapter1Clean code chapter1
Clean code chapter1ukjinkwoun
 
클린 코드 part1
클린 코드 part1클린 코드 part1
클린 코드 part1Minseok Jang
 
NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할Hoyoung Choi
 
Clean code(01)
Clean code(01)Clean code(01)
Clean code(01)규열 김
 
Better softwareengineer han
Better softwareengineer hanBetter softwareengineer han
Better softwareengineer hanDaeMyung Kang
 
Load to Clean code
Load to Clean codeLoad to Clean code
Load to Clean code영주 박
 
(책 소개) 레거시 코드 활용 전략
(책 소개) 레거시 코드 활용 전략(책 소개) 레거시 코드 활용 전략
(책 소개) 레거시 코드 활용 전략Jay Park
 
Code Review - DevOn2013
Code Review - DevOn2013Code Review - DevOn2013
Code Review - DevOn2013호정 이
 
[135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균
[135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균[135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균
[135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균NAVER D2
 
SWDeveloprStory201601
SWDeveloprStory201601SWDeveloprStory201601
SWDeveloprStory201601Suho Kwon
 
smell like sin spirits(codereview mindset)
smell like sin spirits(codereview mindset)smell like sin spirits(codereview mindset)
smell like sin spirits(codereview mindset)영주 박
 
[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
 
테스트 기발 개발, TBD(Test based developement)
테스트 기발 개발, TBD(Test based developement)테스트 기발 개발, TBD(Test based developement)
테스트 기발 개발, TBD(Test based developement)도형 임
 
카카오스토리 웹팀의 코드리뷰 경험
카카오스토리 웹팀의 코드리뷰 경험카카오스토리 웹팀의 코드리뷰 경험
카카오스토리 웹팀의 코드리뷰 경험Ohgyun Ahn
 
임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011devCAT Studio, NEXON
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018devCAT Studio, NEXON
 
리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기Heo Seungwook
 
[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법MinGeun Park
 

Similar to [2012 01 28]cleancode 1장 (20)

[2012 03 17]clean_code 14장 점진적개선
[2012 03 17]clean_code 14장 점진적개선[2012 03 17]clean_code 14장 점진적개선
[2012 03 17]clean_code 14장 점진적개선
 
Clean code chapter1
Clean code chapter1Clean code chapter1
Clean code chapter1
 
클린 코드 part1
클린 코드 part1클린 코드 part1
클린 코드 part1
 
Clean code
Clean codeClean code
Clean code
 
NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할
 
Clean code(01)
Clean code(01)Clean code(01)
Clean code(01)
 
Better softwareengineer han
Better softwareengineer hanBetter softwareengineer han
Better softwareengineer han
 
Load to Clean code
Load to Clean codeLoad to Clean code
Load to Clean code
 
(책 소개) 레거시 코드 활용 전략
(책 소개) 레거시 코드 활용 전략(책 소개) 레거시 코드 활용 전략
(책 소개) 레거시 코드 활용 전략
 
Code Review - DevOn2013
Code Review - DevOn2013Code Review - DevOn2013
Code Review - DevOn2013
 
[135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균
[135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균[135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균
[135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균
 
SWDeveloprStory201601
SWDeveloprStory201601SWDeveloprStory201601
SWDeveloprStory201601
 
smell like sin spirits(codereview mindset)
smell like sin spirits(codereview mindset)smell like sin spirits(codereview mindset)
smell like sin spirits(codereview mindset)
 
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
 
테스트 기발 개발, TBD(Test based developement)
테스트 기발 개발, TBD(Test based developement)테스트 기발 개발, TBD(Test based developement)
테스트 기발 개발, TBD(Test based developement)
 
카카오스토리 웹팀의 코드리뷰 경험
카카오스토리 웹팀의 코드리뷰 경험카카오스토리 웹팀의 코드리뷰 경험
카카오스토리 웹팀의 코드리뷰 경험
 
임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
 
리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기
 
[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법
 

More from 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
 
[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 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
 

More from 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장
 
[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 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 01 28]cleancode 1장

  • 2. 책을 읽는 방법 • 심심풀이로 읽어보는 ‘기분 좋은’ 책이 아니라 열심히, 아주 열심히 파고들어야 하는 책이다 • 책은 세 부분으로 구성되어있다. • 첫번째 : 클린 코드를 작성하는 원칙,패턴,실기 설명 • 두번째 : 사례 연구를 통해 문제가 있는 코드를 문제가 적은 코드로 바꾸는 연습 • 세법째 : 결말. 사례를 통해 수집한 냄새와 발견법을 열거
  • 3. Clean Code 1장 클린 코드 2012 01. 28 원종필
  • 4. • 기능을 추가할 수록 코드는 엉망이 되고.. • 급해서 서두르고.. • 제대로 짤 시간이 없어서 코드를 다듬지 못하고.. • 안 돌아가는 프로그램보다 돌아가는 쓰레기가 낫다고 스스로를 위로하고 나중에 정리하겠다고 다짐.. • 하지만 나중은 결코 오지 않는다.
  • 6. 나쁜 코드 • 나쁜 코드가 쌓일 수록 생산성은 떨어진다 • 기능을 추가보다 추가로 인한 변경 처리가 더 오래걸린다 • 나쁜 코드가 만들어지는 원인은? • 일정이 충분하지 못해서? • 요구 사항이 변경되어서? • 좋은 코드를 사수하는 일은 프로그래머들의 책임이다 • 나쁜코드를 양산하면 나쁜코드로 인해 속력이 늦어져서 기한을 놓친다 • 기한을 맞추는 유일한 방법은 언제나 코드를 깨끗하게 유지하는 습관이다
  • 7. 클린 코드 • 우아하고 효율적인 코드 – 비야네 스트롭스트룹(Bjarne Stroustrup) • 클린 코드는 잘 쓴 문장처럼 읽힌다 – 그래디 부치(Grady Booch) • 작성자가 아닌 사람도 읽기 쉽고 고치기 쉽다 - 데이브 토마스(Dave Thomas) • 언제나 누군가 주의 깊게 짰다는 느낌을 준다 고치려고 살펴봐도 딱히 손댈 곳이 없다 – 마이클 페더(Michaael Feather) • 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행되는 코드 - 워드 커닝엄(Ward Cunningham)
  • 8. 클린 코드 • 코드를 읽는 시간 대 코드를 짜는 시간의 비율은 10:1을 넘는다 • 새 코드를 짜면서 끊임없이 기존 코드를 읽는다 • 읽기 쉬운 코드가 매우 중요 • 코드를 잘 짰다고 전부가 아니다 • 시간이 지나도 언제나 깨끗하게 유지해야 한다 • 저장소에서 받았을때보다 좀더 클린 코드를 저장소에 올린다면 코드는 절대로 나빠지지 않는다 • 한꺼번에 많은 시간을 투자해서 정리하지 말고 변수 이름 하나 개선, if문 정리.. 간단히 해라.
  • 9. Q/A
  • 10. 끝.