SlideShare uma empresa Scribd logo
1 de 27
SerialDate 리팩토링
16.1 SerialDate 리팩토링

❖   SerialDateTests [목록 B-2]

❖   클로버 코드 커버리지 분석 도구 수행해 본 결과
    185개 문장중 91개문장만 수행. 약 50%의 커버리지.

❖   단위 테스트 케이스 추가[목록 B-4]

❖   50% -> 92%
16.2 Make It Right.
변경 이력 주석 제거.
주석에 HTML 제거.
명확한 클래스명과
불필요한 상속 제거.
시리얼라이즈 지원 수정
깔끔한 표현 및 추상화 수준
부모클래스가
파생클래스를 생성.
추상 팩토리 패턴
주석 제거
public, 변수 제거.
변수 위치 이동.
enum 사용.
모호한 상수명 수정.
사용하지 않는 함수 제거.
final, 주석 제거, 예외처리
메소드 합치기
기능 욕심(Feature Envy) 제거.
플래그 인자 제거.
서술적 표현으로 변경.
addDays 메소드 수정
임시 설명 변수
(Explaining Temporary Variables) 적용
이상한 메소드 수정.
추상 메서드 수정
추상 메서드 수정.
추상메서드 수정.

Mais conteúdo relacionado

Destaque

실패한 프로젝트들의 개발문화_개발방법론
실패한 프로젝트들의 개발문화_개발방법론실패한 프로젝트들의 개발문화_개발방법론
실패한 프로젝트들의 개발문화_개발방법론Suwon Chae
 
Bnf seeg ws
Bnf seeg wsBnf seeg ws
Bnf seeg wsbbongcsu
 
Refactoring 메소드 호출의 단순화
Refactoring 메소드 호출의 단순화Refactoring 메소드 호출의 단순화
Refactoring 메소드 호출의 단순화HyeonSeok Choi
 
TDD&Refactoring Day 01: Refactoring
TDD&Refactoring Day 01: RefactoringTDD&Refactoring Day 01: Refactoring
TDD&Refactoring Day 01: RefactoringSuwon Chae
 
TDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDDTDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDDSuwon Chae
 
The roadtocodecraft
The roadtocodecraftThe roadtocodecraft
The roadtocodecraftbbongcsu
 
study refactoring
study refactoringstudy refactoring
study refactoring재원 최
 
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
 

Destaque (20)

실패한 프로젝트들의 개발문화_개발방법론
실패한 프로젝트들의 개발문화_개발방법론실패한 프로젝트들의 개발문화_개발방법론
실패한 프로젝트들의 개발문화_개발방법론
 
Bnf seeg ws
Bnf seeg wsBnf seeg ws
Bnf seeg ws
 
Refactoring
RefactoringRefactoring
Refactoring
 
Refactoring 메소드 호출의 단순화
Refactoring 메소드 호출의 단순화Refactoring 메소드 호출의 단순화
Refactoring 메소드 호출의 단순화
 
TDD&Refactoring Day 01: Refactoring
TDD&Refactoring Day 01: RefactoringTDD&Refactoring Day 01: Refactoring
TDD&Refactoring Day 01: Refactoring
 
TDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDDTDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDD
 
Bnf seeg
Bnf seegBnf seeg
Bnf seeg
 
Refactoring#9
Refactoring#9Refactoring#9
Refactoring#9
 
The roadtocodecraft
The roadtocodecraftThe roadtocodecraft
The roadtocodecraft
 
study refactoring
study refactoringstudy refactoring
study refactoring
 
Refactoring Seminar
Refactoring SeminarRefactoring Seminar
Refactoring Seminar
 
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
 

Mais de 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
 

Mais de Kyungryul KIM (20)

Ch4 pugixml
Ch4 pugixmlCh4 pugixml
Ch4 pugixml
 
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
 

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. SpreadsheetDate에서만 사용되는 상수값을 옮김.\n
  9. SerialDate 에서 자식클래스 SpreadSheetDate 를 생성하고 있음.\n
  10. 자식 클래스 생성을 제거하기 위해\n
  11. \n
  12. LAST_DAY_OF_MONTH 는 정적 함수에서만 사용.(public제거?)\nAGGREGATE_DAYS_TO_END_OF_MONTH 는 사용되지 않음.\n
  13. AGGREGATE_DAYS_TO_END_OF_PRECEDING_MONTH 는 SpreadsheetDate에서만 사용되어 옮김.\n
  14. \n
  15. 개/반개/폐구간 정의.\n
  16. description(), SerialDate(), \nisValidWeekdayCode() 은 enum으로 변경했으므로 삭제.\n
  17. final 삭제, \n-1을 제거한다는 주석외에 의미없음. 이것도 enum으로 변경했으므로 의미없음.\nIllegalArgumentException 발생.\n
  18. DateFormatSymbols 클래스 이용.\n
  19. 쓸데없이 어렵게 구현된 코드 제거.\n
  20. \n
  21. 윤년확인.\n
  22. static 제거. 인스턴스 메서드로 수정.\ntoSerial()을 getOrdinalDay()\nAddDays(7), plusDays(5) 의미?(p378)\n
  23. 임시변수를 사용 좀 더 명확하도록 수정.\n
  24. 인자로 받는 SerialDate의 의미가 없다. 그래서 제거.\n\n
  25. toDate() 함수가 추상 메서드일 필요가 없어서 abstract 제거.\n
  26. 추상메서드 isInRange()를 DayDate로 옮기고, abstract제거.\n
  27. \n