SlideShare a Scribd company logo
1 of 41
5 형식 맞추기
  Clean Code
형식 맞추기
형식 맞추기

프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜
야 한다.
형식 맞추기

프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜
야 한다.
코드 형식을 맞추기 위한 간단한 형식을 정하고 그
규칙을 착실히 따라야 한다.
형식 맞추기

프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜
야 한다.
코드 형식을 맞추기 위한 간단한 형식을 정하고 그
규칙을 착실히 따라야 한다.
팀으로 일한다면 팀이 합의해 규칙을 정화고 모두
그 규칙을 따라야 한다.
형식 맞추기

프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜
야 한다.
코드 형식을 맞추기 위한 간단한 형식을 정하고 그
규칙을 착실히 따라야 한다.
팀으로 일한다면 팀이 합의해 규칙을 정화고 모두
그 규칙을 따라야 한다.

규칙을 자동으로 적용하는 도구를 활용한다.
5.1 형식을 맞추는 목적


코드 형식은 중요하다! 너무 중요해서 무시하기 어
렵다.
코드 형식은 의사소통의 일환이다.

의사소통은 전문 개발자의 일차적인 의무이다.
5.2 적절한 행 길이를 유지하라
적절한 행길이를 유지하라


200~500줄 정도의 파일로
충분히 큰 시스템을 구축할 수 있다
(FitNesse 는 50,000줄 정도)

큰 파일보다 작은 파일이 이해하기 쉽다
신문 기사처럼 작성하라
     신문 기사            소스 코드

                   모듈을 설명할 수 있는
가장 상단에 요약하는 표제
                       파일명
                     파일 첫 부분에
첫문단에 기사 내용 요약
                   고차원 개념과 알고리즘
  세세한 사항보다          아래로 내려갈수록
   커다란 그림             세부사항
                    가장 저차원 함수와
 날짜, 이름,... 세부사항
                       세부 내역
개념은 빈 행으로 분리하라
세로 밀집도
세로 여백이 개념을 분리한다면
세로 밀집도는 연관성을 의미한다.
수직 거리



서로 밀접한 개념은 세로로 가까이 두라.

protected변수를 피해야 하는 이유 중 하나다?
변수 선언

변수는 사용하는 위치에 최대한 가까이 선언.

함수를 짧게 만들고, 변수는 처음에 선언.
변수 선언

루프 제어 변수는 루프 문 내부에 선언.
변수 선언

다소 긴 함수에서 블록 상단이나
루프 직전에 변수 선언.
인스턴스 변수


인스턴스 변수는 클래스 맨 처음에 선언.

잘 알려진 위치(제일 앞/뒤...)에
인스턴스 변수를 선언.
종속 함수


한 함수가 다른 함수를 호출한다면
두 함수는 세로로 가까이 배치해라.
호출하는 함수를
호출되는 함수보다 먼저 배치하라.
개념적 유사성
친화도가 높을수록 코드를 가까이 배치.
세로 순서
세로 순서


함수 호출 종속성을 아래 방향으로 유지해라.
세로 순서


함수 호출 종속성을 아래 방향으로 유지해라.

고차원에서 저차원.
세로 순서


함수 호출 종속성을 아래 방향으로 유지해라.

고차원에서 저차원.
세세한 사항은 최대한 마지막에 표현.
세로 순서


함수 호출 종속성을 아래 방향으로 유지해라.

고차원에서 저차원.
세세한 사항은 최대한 마지막에 표현.

첫 함수 몇 개만 읽어도 개념 파악이 가능.
5.3 가로 형식 맞추기
가로 공백과 밀집도
가로 공백과 밀집도
가로 공백은 밀접한 개
념과 느슨한 개념을 표
현.
가로 공백과 밀집도
가로 공백은 밀접한 개
념과 느슨한 개념을 표
현.

할당 연산자 강조.
가로 공백과 밀집도
가로 공백은 밀접한 개
념과 느슨한 개념을 표
현.

할당 연산자 강조.
함수와 인수는 밀접.
가로 공백과 밀집도
가로 공백은 밀접한 개
념과 느슨한 개념을 표
현.

할당 연산자 강조.
함수와 인수는 밀접.

인수와 인수는 별개.
가로 공백과 밀집도
가로 공백은 밀접한 개
념과 느슨한 개념을 표
현.

할당 연산자 강조.
함수와 인수는 밀접.

인수와 인수는 별개.

연산자 우선 순위 강조.
가로 정렬
들여쓰기
들여쓰기 무시하기
가짜 범위
5.4 팀 규칙
5.4 팀 규칙


자신이 선호하는 규칙보다 팀에서 정한 규칙 우선.
5.4 팀 규칙


자신이 선호하는 규칙보다 팀에서 정한 규칙 우선.

팀은 한 가지 규칙을 정하고,
팀원은 그 규칙을 따른다.
5.4 팀 규칙


자신이 선호하는 규칙보다 팀에서 정한 규칙 우선.

팀은 한 가지 규칙을 정하고,
팀원은 그 규칙을 따른다.

동일한 규칙을 IDE 코드 형식기를 설정.
밥 아저씨의 규칙

More Related Content

Viewers also liked

Play Providers Conference- State of the Industry Workshop
Play Providers Conference- State of the Industry WorkshopPlay Providers Conference- State of the Industry Workshop
Play Providers Conference- State of the Industry Workshoptheppa
 
PPA Parties Forum
PPA Parties ForumPPA Parties Forum
PPA Parties Forumtheppa
 
National Income Accounting
National Income AccountingNational Income Accounting
National Income AccountingMD Siyam Hossain
 
Using You Tube to market your indoor play centre
Using You Tube to market your indoor play centreUsing You Tube to market your indoor play centre
Using You Tube to market your indoor play centretheppa
 

Viewers also liked (8)

Ciia ch4
Ciia ch4Ciia ch4
Ciia ch4
 
Ch4 pugixml
Ch4 pugixmlCh4 pugixml
Ch4 pugixml
 
Play Providers Conference- State of the Industry Workshop
Play Providers Conference- State of the Industry WorkshopPlay Providers Conference- State of the Industry Workshop
Play Providers Conference- State of the Industry Workshop
 
PPA Parties Forum
PPA Parties ForumPPA Parties Forum
PPA Parties Forum
 
“Primary Care Coalition, Montgomery County: Steve Galen”
“Primary Care Coalition, Montgomery County: Steve Galen”“Primary Care Coalition, Montgomery County: Steve Galen”
“Primary Care Coalition, Montgomery County: Steve Galen”
 
National Income Accounting
National Income AccountingNational Income Accounting
National Income Accounting
 
Epub
EpubEpub
Epub
 
Using You Tube to market your indoor play centre
Using You Tube to market your indoor play centreUsing You Tube to market your indoor play centre
Using You Tube to market your indoor play centre
 

Similar to Cleancode ch5

깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)Jay Park
 
[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java유리 하
 
The art of readable code ch4 ch8
The art of readable code ch4   ch8The art of readable code ch4   ch8
The art of readable code ch4 ch8Ki Sung Bae
 
Erlang을 이용한 swap 서버
Erlang을 이용한 swap 서버Erlang을 이용한 swap 서버
Erlang을 이용한 swap 서버Jaejin Yun
 
2015 나는 프로그래머다 컨퍼런스 (11) 염산악 - 가독성에 대하여
2015 나는 프로그래머다 컨퍼런스 (11) 염산악 - 가독성에 대하여2015 나는 프로그래머다 컨퍼런스 (11) 염산악 - 가독성에 대하여
2015 나는 프로그래머다 컨퍼런스 (11) 염산악 - 가독성에 대하여iamprogrammerofficial
 
읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다wonmin lee
 
Chapter5 ~ 6
Chapter5 ~ 6Chapter5 ~ 6
Chapter5 ~ 6Injae Lee
 
[2011 04 30]python-3장
[2011 04 30]python-3장[2011 04 30]python-3장
[2011 04 30]python-3장Jong Pil Won
 
Clean code(05)
Clean code(05)Clean code(05)
Clean code(05)규열 김
 
파이썬 둘째날
파이썬 둘째날파이썬 둘째날
파이썬 둘째날명준 김
 
2023_테오콘_패턴매칭을 통해 선언적으로 타입스크립트 다루기_허브
2023_테오콘_패턴매칭을 통해 선언적으로 타입스크립트 다루기_허브2023_테오콘_패턴매칭을 통해 선언적으로 타입스크립트 다루기_허브
2023_테오콘_패턴매칭을 통해 선언적으로 타입스크립트 다루기_허브민 허
 
텐서플로우 기초 이해하기
텐서플로우 기초 이해하기 텐서플로우 기초 이해하기
텐서플로우 기초 이해하기 Yong Joon Moon
 

Similar to Cleancode ch5 (14)

깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)
 
[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java
 
Scala syntax function
Scala syntax functionScala syntax function
Scala syntax function
 
The art of readable code ch4 ch8
The art of readable code ch4   ch8The art of readable code ch4   ch8
The art of readable code ch4 ch8
 
Erlang을 이용한 swap 서버
Erlang을 이용한 swap 서버Erlang을 이용한 swap 서버
Erlang을 이용한 swap 서버
 
2015 나는 프로그래머다 컨퍼런스 (11) 염산악 - 가독성에 대하여
2015 나는 프로그래머다 컨퍼런스 (11) 염산악 - 가독성에 대하여2015 나는 프로그래머다 컨퍼런스 (11) 염산악 - 가독성에 대하여
2015 나는 프로그래머다 컨퍼런스 (11) 염산악 - 가독성에 대하여
 
읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다
 
Chapter5 ~ 6
Chapter5 ~ 6Chapter5 ~ 6
Chapter5 ~ 6
 
[2011 04 30]python-3장
[2011 04 30]python-3장[2011 04 30]python-3장
[2011 04 30]python-3장
 
Clean code(05)
Clean code(05)Clean code(05)
Clean code(05)
 
Python
PythonPython
Python
 
파이썬 둘째날
파이썬 둘째날파이썬 둘째날
파이썬 둘째날
 
2023_테오콘_패턴매칭을 통해 선언적으로 타입스크립트 다루기_허브
2023_테오콘_패턴매칭을 통해 선언적으로 타입스크립트 다루기_허브2023_테오콘_패턴매칭을 통해 선언적으로 타입스크립트 다루기_허브
2023_테오콘_패턴매칭을 통해 선언적으로 타입스크립트 다루기_허브
 
텐서플로우 기초 이해하기
텐서플로우 기초 이해하기 텐서플로우 기초 이해하기
텐서플로우 기초 이해하기
 

More from Kyungryul KIM

전문검색기술도전
전문검색기술도전전문검색기술도전
전문검색기술도전Kyungryul KIM
 
Nib_NSWindowController
Nib_NSWindowControllerNib_NSWindowController
Nib_NSWindowControllerKyungryul KIM
 
서버인프라를지탱하는기술5 1 2
서버인프라를지탱하는기술5 1 2서버인프라를지탱하는기술5 1 2
서버인프라를지탱하는기술5 1 2Kyungryul KIM
 
Chaper24 languages high_and_low
Chaper24 languages high_and_lowChaper24 languages high_and_low
Chaper24 languages high_and_lowKyungryul KIM
 
Ch22 운영체제
Ch22 운영체제Ch22 운영체제
Ch22 운영체제Kyungryul KIM
 

More from Kyungryul KIM (20)

Node ch12
Node ch12Node ch12
Node ch12
 
11.scripting
11.scripting11.scripting
11.scripting
 
32 osx app_release
32 osx app_release32 osx app_release
32 osx app_release
 
Meteor ddp
Meteor ddpMeteor ddp
Meteor ddp
 
Cocos2dx 7.1-7.2
Cocos2dx 7.1-7.2Cocos2dx 7.1-7.2
Cocos2dx 7.1-7.2
 
Cocos2 d x-7.3_4
Cocos2 d x-7.3_4Cocos2 d x-7.3_4
Cocos2 d x-7.3_4
 
Cocos2d x-ch5-1
Cocos2d x-ch5-1Cocos2d x-ch5-1
Cocos2d x-ch5-1
 
Coco2d x
Coco2d xCoco2d x
Coco2d x
 
23 drag drop
23 drag drop23 drag drop
23 drag drop
 
Hadoop ch5
Hadoop ch5Hadoop ch5
Hadoop ch5
 
전문검색기술도전
전문검색기술도전전문검색기술도전
전문검색기술도전
 
Nib_NSWindowController
Nib_NSWindowControllerNib_NSWindowController
Nib_NSWindowController
 
Dsas
DsasDsas
Dsas
 
서버인프라를지탱하는기술5 1 2
서버인프라를지탱하는기술5 1 2서버인프라를지탱하는기술5 1 2
서버인프라를지탱하는기술5 1 2
 
Chaper24 languages high_and_low
Chaper24 languages high_and_lowChaper24 languages high_and_low
Chaper24 languages high_and_low
 
Ch22 운영체제
Ch22 운영체제Ch22 운영체제
Ch22 운영체제
 
Mibis ch20
Mibis ch20Mibis ch20
Mibis ch20
 
Mibis ch15
Mibis ch15Mibis ch15
Mibis ch15
 
Mibis ch8
Mibis ch8Mibis ch8
Mibis ch8
 
Mibis ch4
Mibis ch4Mibis ch4
Mibis ch4
 

Cleancode ch5

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. 상자 수염 다이어그램. 로그 눈금, fitnesse 평균은 65줄, 1/3 정도가 40~100줄,\njunit,fitness,tam은 500줄을 넘기는 파일이 거의 없고, 대다수가 200줄 미만.\nTomcat, ant 절반 이상이 200줄넘고, 수천줄도 있다.\n
  8. \n
  9. 블로그 글쓰기도 유사,\n대다수 기사가 짧다.\n
  10. 패키지 선언부, import문, 각 함수 사이에 빈 행.\n눈의 초점을 흐리게 하고 바라보라.\n
  11. 5-4 책 예제가 틀림.\n
  12. protected변수를 피해야 하는 이유 중 하나?\n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. 각 함수 호출하는 함수가 먼저 나오고, 이후 호출되는 순으로 함수를 배치.\npage 변수\n
  19. assert 함수군.\n
  20. \n
  21. \n
  22. \n
  23. \n
  24. 20~60자 사이의 모든 행의 수의 1%정도 -> 총 행 수의 40%.\n행 길이가 커질수록 행 수는 급격히 감소.(로그 스케일)\n120자로 설정.\n\n
  25. 할당 연산자(+=) 사이 공백.\n
  26. 할당 연산자(+=) 사이 공백.\n
  27. 할당 연산자(+=) 사이 공백.\n
  28. 할당 연산자(+=) 사이 공백.\n
  29. 할당 연산자(+=) 사이 공백.\n
  30. 변수 타입을 무시하고 변수명을 본다.\n할당 연산자보다 피연산자.\n도구가 이런 정렬을 무시한다.\n클린 코드가 단순히 예쁜 정렬만을 말하진 않는다.\n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n