도박은 정신건강에 해롭다.
@DisplayName
사용하는 것으로 통일import
문은 정리README.md
)에서 유지보수 고려해 커밋TODO
는 커밋서 제외하기InputView
리턴값은 원시값인 편이 좋다!View
가 도메인을 모르게 하자View
에서 처리toString()
, HashCode()
는 본 용도에 맞게View
출력 용도로 쓰지 말자!!(꼼수ㄴㄴ)Fixtures
클래스에서Domain
등에서 테스트 코드에서만 사용되는 구현(메서드, 생성자...) 존재Fixtures
)를 만들어주자!Fixtures
를 사용하는거로 생각 중public static final
필드 방식 - bad..?(리플렉션으로 깨짐)Enum
방식- good!Comparator
는 신중히 쓰자public boolean isBust() {
return getPoint().compareTo(BLACKJACK_POINT) > 0;
}
private
getter
를 쓰자Stack
, Deque
public class Application {
public static void main(String[] args) {
Deque<String> deque = new ArrayDeque<>();
deque.addFirst("첫 번째 요소"); // "첫 번째 요소"
deque.add("두 번째 요소"); // "첫 번째 요소", "두 번째 요소"
deque.push("세 번째 요소"); // "세 번째 요소", "첫 번째 요소", "두 번째 요소"
System.out.println(deque.pop());
System.out.println(deque.pop());
}
}
// 실행 결과
// > Task :Application.main()
// 세 번째 요소
// 첫 번째 요소
Deque
는 LinkedList
보다 ArrayDeque
을 사용몰아치는 피드백에 부족함을 깨달았다
블랙잭 페어 직후 땐 기본 구현이 일찍 끝나 좋아했다.
그런데 알고보니 기본 룰 규칙 숙지에 있어 미흡한 부분도 있었고,
스스로 정한 목표들을 지키지 못한 부분들도 있었다.
- 질문은 구체적으로
- 질문은 관련 코드에 커멘트로 달기
- ~~해당 방향이 맞나요? 보다는 내 생각(근거)를 먼저 말하고 의견 묻기
- 필요시 DM 등으로 추가질문 하기
질문하는 법에 대해서도 깨달은 지점이 있다.
단순히 내가 모르는 부분을 물어보면, 상대방은 알아서 대답해줄 거라 생각했다.
하지만 리뷰어도 나와같은 사람이다!
애매하고 이해하기 힘든 질문을 쏟아내면 이를 해독하는 리뷰어 입장이 난처해질 수 있다.
앞으로 질문할 때 위 네 방법을 고려해야겠다.
수업에서, 여러 책들과 리뷰어의 피드백에서 여러 개념들을 배웠다.
공부해가며 느끼는건 정답은 없다는 것이다.
누군가는 정적팩토리메서드를 최고의 방법론으로 떠받치지만,
다른 이는 문서화가 힘들고, 생성자를 쓰는 편이 낫다고 말한다.(심지어 객체지향적이지 않다고도 한다...)
누군가는 abstract를 통한 상속은 이후 템플릿 메소드 패턴을 통해 안정적으로 사용할 수 있다고 한다.
또다른 누군가는 그럼에도 높은 결합도에 문제가 있으며,
되도록 조합과 인터페이스 상속을 이용하라 권장한다.
최근 책 오브젝트 스터디에 참여하고 있다.
책에 마법의 단어 "트레이드 오프"가 자주 등장한다!
책임을 (독자에게) 위임하는 저자..?😂
결국 코드에 정답은 없다.
구현 요구사항과 명백한 몇 규칙은 지켜야겠지만^^
그 안의 세부적인 구현 방식은 아티클 몇개에 의존하지 않고 스스로 판단해 결정해야겠다!
- 배운 것을 직접 기록하자(복붙 X, 내 언어로!)
- 코드에 적용해본 후 피드백을 받자
- 다른 크루들과 말로 배움을 공유하자(배우고 가르쳐주고 토론하기)
학습로그나 블로그, 노션 기록 등을 통해
나름 열심히 머릿속에 집어넣었다고 생각했다.
막상 이러한 구현을 왜 했는지, 그 근거들을 되짚다 보면 애매하게 알고있던 부분을 발견하게 된다.
아예 모르면 공부하지만, 애매하게 알면 답이 없다. 남들과 소통할 때에도 삐걱거릴 수밖에 없다.
보다 단단하게 공부하자!🔥