Skip to content

Commit 8814ffb

Browse files
authored
[최서희] 15장,16장,17장 : JUnit 들여다보기, SerialDate 리팩터링, 냄새와 휴리스틱 (#39)
* Create 최서희.md * Create 최서희.md * Create 최서희.md * Update 최서희.md * Update 최서희.md
1 parent 33d3920 commit 8814ffb

File tree

3 files changed

+120
-0
lines changed

3 files changed

+120
-0
lines changed

15장/최서희.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# 15장. JUnit 들여다보기
2+
3+
## 인상 깊은 내용
4+
5+
**코드를 리팩토링 하다보면 원래 했던 변경을 되돌리는 경우가 흔하다. 리팩터링은 코드가 어느 수준에 이를 때까지 수많은 시행착오를 반복하는 작업이기 때문이다.**
6+
7+
**세상에 개선이 불필요한 모듈은 없다. 코드를 처음보다 조금 더 때끗하게 만드는 책임은 우리 모두에게 있다.**

16장/최서희.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# 16장. SerialDate 리팩터링
2+
3+
## 인상 깊은 내용
4+
5+
**첫째, 돌려보자**
6+
7+
**둘째, 고쳐보자**
8+
9+
* 처음에 나오는 주석은 너무 오래되었다. 그레서 간단하게 고치고 개선했다.
10+
* 둘째, enum을 모두 독자적인 소스 파일로 옮겼다.
11+
* 셋째, 정적 변수(dateFormatSymbols)와 정적 메서드(getmonthNames, isLeap Year, lastDayOfMonth)를 DateUtil이라는 새 클래스로 옮겼다.
12+
* 넷째, 일부 추상 매서드를 DayDate 클래스로 끌어올렸다.
13+
* 다섯째, Month.make를 Month.fromInt로 변경했다. 다른 enum도 똑같이 변경했다, 다른 enum도 똑같이 변경했다. 또한 모든 enum에 toInt()접근자를 생성하고 index 필드를 private로 정의했다.
14+
* 여섯째, plusYears와 plusMonths에 흥미로운 중복이 있었다. correctLastDayOfMonth라는 새 메서드를 생성해 중복을 없앴다. 그래서 세 메서드가 모두 좀 더 명확해졌다.
15+
* 일곱째, 팔방미인으로 사용하던 숫자 1을 없앴다. 모두 MonthJANUARY,toInt() 혹은 Day.SUNDAY.toInt()로 적절히 변경했다. SpredsheetDate 코드를 살펴보고 알고리즘을 조금 손봤다.
16+

17장/최서희.md

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
# 17장. 냄새와 휴리스틱
2+
3+
## 인상 깊은 내용
4+
5+
**주석**
6+
7+
* 부적절한 정보
8+
: 다른 시스템에 저장할 정보
9+
* 쓸모 없는 주석
10+
: 오래된 주석, 엉뚱한 주석, 잘못된 주석
11+
* 중복된 주석
12+
: 코드만으로 충부난데 구구절절 설명하는 주석
13+
* 성의 없는 주석
14+
: 작성할 가치가 있는 주석은 잘 작성할 가치도 있다. 간결하고 명료하게 작성한다.
15+
* 주석 처리된 코드
16+
: 코드를 읽다가 주석으로 처리된 코드가 줄줄이 나오면 신경이 아주 거슬린다.
17+
18+
**환경**
19+
20+
* 여러 단계로 빌드해야 한다.
21+
: 빌드는 간단히 한 단계로 끝내야 한다. 한 명령으로 전체를 체크아웃해서 한 명령으로 빌드할 수 있어야 한다.
22+
* 여러 단계로 테스트해야 한다.
23+
: 모든 단위 테스트는 한 명령으로 돌려야 한다. IDE에서 바튼 하나로 모든 테스트를 돌린다면 가장 이상적이다.
24+
25+
**함수**
26+
27+
* 너무 많은 인수
28+
: 함수에서 인수 개수는 작을수록 좋다.
29+
* 출력 인수
30+
: 출력 인수는 직관을 정면으로 위배한다. 일반적으로 독자는 인수를 입력으로 간주한다. 함수에서 뭔가의 상태를 변경해야 한다면 함수가 속한 객체의 상태를 변경한다.
31+
* 플래스 인수
32+
: boolean 인수는 함수가 여러 기능을 수행한다는 명백한 증거다. 플래그 인수는 혼란을 초래하므로 피해야 마땅하다.
33+
* 죽은 함수
34+
: 아무도 호출하지 않는 함수는 삭제한다.
35+
36+
**일반**
37+
38+
* 한 소스 파일에 여러 언어를 사용한다.
39+
* 당연한 동작을 구현하지 않는다.
40+
* 경계를 올바로 처리하지 않는다.
41+
* 안전 절차 무시
42+
* 중복
43+
* 추상화 수준이 올바르지 못하다.
44+
* 기초 클래스가 파생 클래스에 의존한다.
45+
* 과도한 정보
46+
* 죽은 코드
47+
* 수직 분리
48+
* 일관성 부족
49+
* 잡동사니
50+
* 인위적 결합
51+
* 기능 욕심
52+
* 서낵자 인수
53+
* 모호한 의도
54+
* 잘못 지운 책임
55+
* 부적절한 static 함수
56+
* 서술적 변수
57+
* 이름과 기능이 일치하는 함수
58+
* 알고리즘을 이해하라
59+
* 논리적 의존성은 물리적으로 드러내라
60+
* If/Else 혹은 Switch/Case문보다 다형성을 사용하라
61+
* 표준 표기법을 따르라
62+
* 매직 숫자는 명명된 숫자로 교체하라
63+
* 정확하라
64+
* 곤례보다 구조를 사용하라
65+
* 조건을 캡슐화하라
66+
* 부정 조건은 피하라
67+
* 숨겨진 시간적인 결합
68+
* 일관성을 유지하라
69+
* 경계 조건을 캡슐화하라
70+
* 함수는 추상화 수준을 한 단계만 내려가야 한다
71+
* 설정 정보는 최상위 단계에 둬라
72+
* 추이적 탐색을 피해라
73+
74+
**자바**
75+
* 긴 import 목록을 피하고 와일드카드를 사용하라
76+
* 상수는 상속하지 않는다
77+
* 상수 대 Enum
78+
79+
**이름**
80+
* 서술적인 이름을 사용하라
81+
* 적절한 추상화 수준에서 이름을 선택하라
82+
* 가능하다면 표준 명명법을 사용하라
83+
* 명확한 이름
84+
* 긴 범위는 긴 이름을 사용하라
85+
* 인코딩을 피하라
86+
* 이름으로 부수 효과를 설명하라
87+
88+
**테스트**
89+
* 불충분한 테스트
90+
* 커버리지 도구를 사용하라!
91+
* 사소한 테스트를 건너뛰지 마라
92+
* 무시한 테스트는 모호함을 뜻한다
93+
* 경계 조건을 테스트하라
94+
* 버그 주변을 철저히 테스트하라
95+
* 실패 패턴을 살펴라
96+
* 테스트 커버리지 패턴을 살펴라
97+
* 테스트는 빨라야 한다

0 commit comments

Comments
 (0)