Your SlideShare is downloading. ×
10장 클래스
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

10장 클래스

112
views

Published on

Clean Code

Clean Code


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
112
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 클래스 박기덕
  • 2. 목차1. 클래스 체계2. 클래스 규모3. SRP4. 응집도5. 변경하기 쉬운 클래스
  • 3. 1. 클래스 체계● 클래스를 정의하는 표준 자바 관례● 변수와 유틸리티 함수는 가능한 공개하지 않는편이 좋지 만 반드시 숨겨야 할 법칙은 없다. (Test Code 작성을 위 한 protected 등)
  • 4. 2. 클래스 규모 70여개의 공 개 메소드로 이루어진 Class . . .위의 함수를 5개의 메소드로 줄이면 작은 Class인가??
  • 5. 2. 클래스 규모● 클래스를 설계할때도 함수와 마찬가지로 작 게가 기본 규칙 이다.● 클래스의 책임이 작을 때 클래스는 작게 된 다.● 클래스의 작명이 클래스 크기를 줄인다.● 클래스 이름에 연결구를 사용하지 않으며, 25 단어 내외로 작명한다.
  • 6. 3. SRP● SRP(Single Responsibility Principle) 이란 클 래스를 변경하는 이유가 오직 하나뿐이어야 한다는 원칙● SRP는 객체 지향 설계에 중요한 개념● "돌아가는 소프트웨어" & "깨끗하고 체계적인 소프트웨어"
  • 7. 3. SRP● 여행가서 찍은 사진을 찾을 때 어떤폴더를 이용할 것 인 가??● 큰 클래스 몇개보다는 작은 클래스 여럿이 더 바람직하 며, 작은 클래스 각각 책임이 하나이고, 변경할 이유가 하 나이고, 다른 작은 클래스와 협력해 동작을 수행
  • 8. 4. 응집도● 각 클래스 메소드는 클래스 인스턴스 변수를 하나 이상 사용하여 응집도를 높여야 한다.● "함수를 작게, 매개변수 목록을 짧게"라는 전 략을 따르다 보면 몇몇 메소드에서만 사용하 는 인스턴스 변수가 많아지는데 이때 응집도 가 높아지도록 클래스를 분리한다.● 클래스가 응집력을 잃는다면 쪼개라!
  • 9. 4. 응집도
  • 10. ● 4. 응집도 (209 Page)● PrimePrinter 클래스는 실행환경을 책임.● RowColumnPagePrinter 클래스는 숫자 목록을 주어진 행과 열에 맞춰 출력을 책임.● PrimeGenerator 클래스는 소수 목록 생성을 책임● 길이가 늘어난 이유 - 서술적인 변수 이름 사용 - 주석을 추가하는 수단으로 함수 선언과 클래스 선언 활용 - 가독성을 높이고자 공백 추가 및 형식 유지
  • 11. 5. 변경하기 쉬운 클래스● 클린 시스템은 클래스를 체계적으로 정리해 변경에 수반 하는 위험을 낮춘다.● Update 문을 추가하면 클래스 변경이 발생하며 다른 코 드를 망칠 잠재적 위험존재● 또한 기존 SQL 문을 수정해도 클래스 변경 발생하며 테 스트도 다시 수행되야 한다.
  • 12. 5. 변경하기 쉬운 클래스
  • 13. 5. 변경하기 쉬운 클래스● 클래스 단순화, 이해도 상승, 잠재적 위험 제 거, 테스트 증명 용이● 새로운 SQL 문 추가시 기존 클래스 변경 X● SRP, OCP 지원
  • 14. 5. 변경하기 쉬운 클래스● 인터페이스와 추상 클래스를 사용하여 구현 이 미치는 영향을 격리● Portfolio 클래스는 5분 단위로 값이 변화하는 TokyoStockExchange 외부 API를 사용하여 값을 계산 할때, 테스트 코드를 만들기 힘들 다.● 그러므로 StockExchange라는 인터페이스를 생성한 후 메소드 하나를 선언한다.
  • 15. 5. 변경하기 쉬운 클래스 ● 시스템 결합도를 낮추면 유연성과 재 사용성도 더 높아진다. ● 결합도가 낮다는 말은 각 시스템 요소 가 다른 요소로부터, 또한 변경으로부 터 잘 격리돼 있다는 의미 ● 결합도를 최소로 줄이면 자연스럽게 또 다른 클래스 설계 원칙인 DIP (Dependency Inversion Principle)를 따 르는 클래스가 나온다.