우테코 프리코스가 끝나고 그동안 배운 걸 정리하기 위해 글을 쓴다.
1주차
- 요구사항 준수할 것
- 커밋 메시지 의미있게 작성할 것
- 이름을 통해 의도를 들어낼 것
2주차
- README.md 상세히 작성
- 기능목록 재검토, 업데이트
- 값을 하드코딩 하지 않기
3주차
- 메서드가 길어지면 분리를 고민할 것
- 발생할 수 있는 모든 예외상항을 고민할 것
- 비즈니스 로직과 UI로직을 분리할 것
public class Lotto {
private List<Integer> numbers;
// 로또 숫자가 포함되어 있는지 확인하는 비즈니스 로직
public boolean contains(int number) {
...
}
// UI 로직
private void print() {
...
}
}
현재 객체의 상태를 보기위한 로그 메시지 성격이 강하다면 toString()을 통해 구현 할 것. View에서 사용할 데이터라면 getter 메서드를 통해 데이터를 전달한다.
- 연관성이 있는 상수는 static final 대신 enum을 활용할 것
- 객체는 객체스럽게 사용할 것
public class LottoGame {
public void play() {
Lotto lotto = new Lotto(...);
}
}
getter보단 getter가 필요한 이유를 도메인 클래스 안에 넣어서 메시지를 던지도록 구조를 바꿀 것
public class Lotto {
private final List numbers;
public boolean contains(int number) {
// 숫자가 포함되어 있는지 확인한다.
...
}
public int matchCount(Lotto other) {
// 당첨 번호와 몇 개가 일치하는지 확인한다.
...
}
}
public class LottoGame {
public void play() {
Lotto lotto = new Lotto(...);
lotto.contains(number);
lotto.matchCount(...);
}
}