본문 바로가기

부트캠프/우아한테크코스

[우테코 6기] 프리코스 4주차 회고 - 크리스마스 프로모션

반응형

[문제] 프리코스 4주차 GitHub

 

GitHub - woowacourse-precourse/java-christmas-6

Contribute to woowacourse-precourse/java-christmas-6 development by creating an account on GitHub.

github.com

 
[풀이] 프리코스 4주차 GitHub

 

GitHub - kyum-q/java-christmas-6-kyum-q

Contribute to kyum-q/java-christmas-6-kyum-q development by creating an account on GitHub.

github.com


개발 요구사항 - 구현 기능 목록

 
https://github.com/kyum-q/java-christmas-6-kyum-q/tree/main/docs


소감 - 느낀 점 

 
 이번 과제에서 느낀 점은 크게 두 가지이다.

 첫째, 구현 기능 목록 작성의 중요성
 지금까지 3주 동안은 기능 요구사항이 직접적으로 주어졌지만, 이번 주차는 이메일 형식으로 간접적으로 주어져서 현업에서 개발하는 느낌이 듦과 동시에 흥미로웠다. 이제 개발을 위해 이전 프리코스 때처럼 구현 기능 목록을 작성하였다. 작성하면서 느낀 점은 요구사항이 간접적으로 주어지다 보니 생각해야 하는 부분, 작성 디테일 정도가 달라 더 오래 걸렸다. 3주 동안은 틀이 정해져 있고 살을 붙이는 느낌이라면 이번 미션은 틀부터 내가 잡는 느낌이었다. 그래서 구현 기능 목록을 제대로 작성하지 않는다면 구현에 어려움이 커질 것으로 생각해 오랜 시간 작성하였고, 개발하면서도 구현 기능 목록을 참고해 구현하니 자세히 작성한 부분은 수월하게 그렇지 않은 부분은 또 다시 고민해야 했다.

둘째, 상속의 편리성
이번 과제를 진행하면서 인터페이스, 상속 관계를 구현하였다. 그 이유는 메뉴와 할인 이벤트 종류 관리를 편리하게 하기 위해서였다. 예를 들어 메뉴에 따라 다른 이벤트를 가져와야 하지만 종류에 대한 기억이 있어야 하고 현재 존재하는 메뉴인지 체크, 가격 체크 등이 필요하다.  물론 하드 코딩하면 더 손쉬웠겠지만, 이번에는 앞에 말했듯이 현업에서 개발하는 느낌이라 후에 가격 변동이나 메뉴 추가 등이 요구사항 변동 생겼을 때 대처하기 쉽게 enum을 이용하고 싶어 최대한 소프트 코딩하고자 했다. 그래서 메뉴는 종류에 따라 나눠지되 하나의 메뉴 리스트로 관리하고 싶어 Menu라는 클래스에 코드를 구현하고 각 메뉴에 대한 이름과 종류와 가격은 enum 함수를 종류별로 만들어 분리하고 종류에 관한 enum을 만들어 클래스 변수로 두어 그들을 다시 묶어주는 형식으로 구현하였다. 이벤트 또한 이벤트라는 기본클래스를 생성하고 이를 상속 받게 하여 이벤트를 확장해 나갔다. 소프트 코딩을 위해서는 무엇이 편리할지 많이 고민했는데 이번 코딩을 통해서 상속을 이용하면 이롭다는 것을 깨달았다.

이러한 깨달음을 얻을 수 있어서 이번 프리코스가 나에게는 더욱 특별한 경험이었다. 앞으로도 명확한 요구사항에 맞춰 프로그래밍하는 경험뿐만 아니라 내가 기능 요구사항을 제작하고 프로그래밍하는 경험을 쌓아 더 발전하고 싶다.
  


 @ParameterizedTest : 파라미터 테스트

 

 

테스트 할 때 파라미터를 여러 개 실행해보고 싶을 때 사용할 수 있는 test 문법

 

  • @ValueSource(strings = {"S1", "S2", ... , "Sn"}) : n개의 파라미터를 통해 n번의 테스트 하고 싶을 때
    • strings = {"s1", "s2"} - string 파라미터
    • ints = {1, 2} - int v파라미터
    • ...
@ParameterizedTest
@ValueSource(strings = {"월","화","수","목","금","토","일"})
void 요일_판단(String s) {
    Week result = Week.getWeek(s);

    assertThat(result).isNotNull();
}

 

  • @CsvSource({"S1, S2","S2, S3", ... , "Sn-1, Sn"}) : n개의 파라미터를 사용하여 n번의 테스트 하고 싶을 때
    • 함수의 인자를 String으로 하면 String 받는 것
    • 함수의 인자를 int으로 하면 int 받는 것
@ParameterizedTest
@CsvSource({"월, 화","화, 수","수, 목","목, 금","금, 토","토, 일","일, 월"})
    void 다음_요일_확인(String s1, String s2) {
        Week current = Week.getWeek(s1);
        Week next = current.nextWeek();

        assertThat(next.toString()).isEqualTo(s2);
    }

 

 



이렇게 공식 프리코스 전에 4주간 프리코스 체험하면서 배운 부분, 느낀 점을 이렇게 글로 적으면서 기록해봤다.

결과가 어떻듯 많은 것을 배운 4주였다.

반응형