• Save
Cleancode ch16 serialdate_refactoring
Upcoming SlideShare
Loading in...5
×
 

Cleancode ch16 serialdate_refactoring

on

  • 292 views

 

Statistics

Views

Total Views
292
Views on SlideShare
292
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • SpreadsheetDate에서만 사용되는 상수값을 옮김.\n
  • SerialDate 에서 자식클래스 SpreadSheetDate 를 생성하고 있음.\n
  • 자식 클래스 생성을 제거하기 위해\n
  • \n
  • LAST_DAY_OF_MONTH 는 정적 함수에서만 사용.(public제거?)\nAGGREGATE_DAYS_TO_END_OF_MONTH 는 사용되지 않음.\n
  • AGGREGATE_DAYS_TO_END_OF_PRECEDING_MONTH 는 SpreadsheetDate에서만 사용되어 옮김.\n
  • \n
  • 개/반개/폐구간 정의.\n
  • description(), SerialDate(), \nisValidWeekdayCode() 은 enum으로 변경했으므로 삭제.\n
  • final 삭제, \n-1을 제거한다는 주석외에 의미없음. 이것도 enum으로 변경했으므로 의미없음.\nIllegalArgumentException 발생.\n
  • DateFormatSymbols 클래스 이용.\n
  • 쓸데없이 어렵게 구현된 코드 제거.\n
  • \n
  • 윤년확인.\n
  • static 제거. 인스턴스 메서드로 수정.\ntoSerial()을 getOrdinalDay()\nAddDays(7), plusDays(5) 의미?(p378)\n
  • 임시변수를 사용 좀 더 명확하도록 수정.\n
  • 인자로 받는 SerialDate의 의미가 없다. 그래서 제거.\n\n
  • toDate() 함수가 추상 메서드일 필요가 없어서 abstract 제거.\n
  • 추상메서드 isInRange()를 DayDate로 옮기고, abstract제거.\n
  • \n

Cleancode ch16 serialdate_refactoring Cleancode ch16 serialdate_refactoring Presentation Transcript

  • 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) 적용
  • 이상한 메소드 수정.
  • 추상 메서드 수정
  • 추상 메서드 수정.
  • 추상메서드 수정.