본문 바로가기

우아한테크코스

[우테코 프리코스] 3주차

숫자 야구 자바 기초 영상

  • 도메인 : 내가 실제 다루고자 하는 서비스의 비즈니스 로직이 들어있는 영역
package baseball.domain

baseball 패키지의 비즈니스 로직이 들어있음
  • 패키지를 나눠줌으로써 동일한 일을 하는 클래스들을 묶어주고 클래스들이 어떤 일을 하는지를 쉽게 알아볼 수 있다.
  • 클래스 변수(static), 인스턴스 변수
  • 불변 변수 선언 : 수정 불가라고 지정. final 키워드 사용
객체 지향 프로그래밍

1. 기능을 가지고 있는 클래스를 인스턴스화(=객체) 한다.
2. 필요한 기능을 역할에 맞는 각 인스턴스가 수행하게 한다.
3. 각 결과를 종합한다.
  • List : 자바에서 제공하는 collection. 필요한 기능을 미리 만들어서 제공해주고 있다. 배열을 사용해서 사용할 기능들 구현하는거보다 제공되는거 받아서 사용하는게 편하다 !
  • 테스트 할 List 만들기
Arrays.asList(1,2,3)
  • Arrays.asList / List.of(array)
    Arrays.asList()는 크고 동적인 데이터에 사용하고, List.of()는 작고 변경되지 않는 데이터의 경우 사용합니다.
    List.of()는 필드 기반 구현이 있고, 내부적으로 힙 공간을 덜 사용하기에 요소 자체가 필요하다면 List.of()가 적절합니다.
    Arrays.asList()는 변경이 가능하고 thread safety 하지 않고, List.of()는 불변하고 thread safety합니다.
    Arrays.asList()는 null 요소를 허용하고 List.of()는 null 요소를 허용하지 않습니다.
    Arrays.asList(), List.of() 모두 크기는 변경할 수 없다. 크기를 바꾸려면 Collections을 생성해서 요소의 값을 옮겨야 합니다.

[출처] https://jaehoney.tistory.com/144

  • command + opt + L : 자동정렬
  • command + n : test 코드 작성 가능
  • 인스턴스 생성과 같은 중복되는 부분은
@BeforeEach
void setUp() {
	referee = new Referee();
}

와 같이 해두면 중복되는 부분 없앨 수 있다

@ParameterizedTest
@CsvSource({"1,2,3,0볼 3스트라이크", "7,8,9,아웃", "2,3,1,3볼 0스트라이크"})
public void compare(int n1, int n2, int n3, String expected) {
	String actual = referee.compare(ANSWER, Arrays.asList(n1, n2, n3));
    assertThat(actual).isEqualTo(expected);

후기랄 것도 없는 후기....

이번주는 정신적으로 힘든게 너무 많아서 과제에 신경을 많이 못썼다
포기할까 싶었는데 다음주 과제를 하고 싶어서 어찌어찌 제출만 했다

  • 잘한 점 : 도메인이랑 UI 패키지 분리를 했다. 저번주처럼 static 메소드 남발하지 않았다
  • 아쉬운 점 : 거의 모든 것. 테스트 코드 짜면서 메소드 기능 하나씩 작은 거부터 만들어나가기를 저번주에 연습했는데 다시 말짱 도루묵이 되어버렸다.. 그냥 메인문 실행해가면서 디버깅하면서도 이러면 안되는데 싶었지만 시간이 너무 부족하니 익숙한 방식대로 하게 되었다. 그리고 아직도 자바 문법에 안익숙하다는것..?ㅋㅋ 마음 다시 다잡고 4주차 과제는 좀 제대로 해봐야겠다 그리고 템플스테이 가서 힐링하고 와야지 !