진소희
1. 📌 핵심 개념 정리
✅ 요약하기
각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다.
첫째, 돌려보자
- SerialDateTests라는 클래스는 단위 테스트 케이스 몇 개를 포함한다. 돌려보면 실패하는 케이스는 없다. 하지만 테스트 케이스를 훑어보면 모든 경우를 점검하지 않는다는 사실이 드러난다.
- 코드 커버리지 분석 도구인 클로버를 이용해 단위 테스트가 실행하는 코드와 실행하지 않는 코드를 조사했다. 대략 50% 정도였다.
- 클래스를 철저히 이해하고 리팩터링하려면 훨씬 높은 테스트 커버리지가 필요했다.
- 둘째,
고쳐보자
하므로 변경 이력은 없애도 되겠다.- 코드를 고칠 때마다 JCommon 단위 테스트와 본인이 짠 단위 테스트를 실행한다.
줄즉, 변경 코드는 JCommon 프레임워크에서 사용해도 문제 없다. - 라이선스 정보, 저작권, 작성자, 변경 이력은 법적인 정보는 필요
약하므로내라이선스 정보와 저작권은 보존한다. 반면, 변경 이력은 1960년대에 나온 방식이다. 이제는 소스 코드 제어 도구를 사용
- 코드를 고칠 때마다 JCommon 단위 테스트와 본인이 짠 단위 테스트를 실행한다.
- 클래스 이름이 SerialDate인 이유가 무엇일까? 일련번호를 사용해 클래스를 구현했기 때문이다.
- 일련번호라는 용어는 정확하지 못하다. 상대 오프셋이 더 정확하다. 일련번호라는 용어는 날짜보다 제품 식별 번호로 더 적합하다.
이름은
- 구현을 암시하는데 실상은 추상 클래스다.
- 구현을
암시할 필요가 없다. 구현은 숨기는 편이 좋다. 그
- 냥 Date가 좋다고 생각한다. 이름이 다른 곳에서 중복되기 때문에, DayDate를 쓰기로 결정한다.
- MonthConstants 클래스는 달을 정의하는 static final 상수 모음에 불과하다.
- 상수 클래스를 상속하면 MonthConstants.January와 같은 표현을 사용할 필요가 없어진다. 바람직하진 않다. MonthConstants는 enum으로 정의해야 마땅하다.
- 일반적으로 우리는 파생 클래스의 인스턴스로부터 구현 정보를 가져온다.
- 일반적으로 기반 클래스(부모 클래스)는 파생 클래스(자식 클래스)를 몰라야 바람직하다.
- 추상 메서드로 위임하는 정적 메서드는 SINGLETON, DECORATOR, ABSTRACT FACTORY 패턴 조합을 사용한다.
- 인수와 변수 선언에서 final 키워드를 모두 없앤다. 실질적인 가치는 없으면서 코드만 복잡하게 만든다고 판단되었기 때문이다.
- for 루프 안에 if문이 두 번 나오는데 ||연산자를 사용해 if문 하나로 만든다.
- 알고리즘이 복잡해지면 임시 변수 설명을 사용해 더 읽기 쉽게 고친다.
2. 🤔 이해가 어려운 부분
🔍 질문하기
책을 읽으며 이해하기 어려웠던 개념이나 명확하지 않았던 내용을 정리합니다.
- 개념 또는 원칙의 이름
- 어려웠던 부분
해당final개념이키워드를헷갈리거나로버트명확시몬스는 코드 전체에 사용하라고 강력히 권장하지만,않았던책의점을저자는구체적으로모두설명합니없앴다. - 궁금한 점
해당 개념이어떤원리로기준인동작하는지, 실무에서 어떻게 활용되는것인지등을이해가질문가지형태로 정리합않았습니다.
- 어려웠던 부분
3. 📚 참고 사항
📢 논의하기
관련된 자료가 있다면 공유하고, 더 깊이 논의하고 싶은 아이디어나 의견을 정리합니다.
관련 자료 공유추가 자료관련 블로그 글이나 공식 문서 링크를 제공합니다.
논의하고 싶은 주제주제논의하고 싶은 내용을 간략히 정리합니다.설명논의하고 싶은 이유를 작성합니다.