본문 바로가기

전체 글

(187)
우테코 4주차- [크리스마스 이벤트] 회고 우테코의 4주차 회고를 시작해보자. 이번 미션을 시작할 때 3주차 공통피드백에서 크게 신경을 썼던 점은 다음과 같다. - 무분별한 getter보다 객체에 메시지를 보내 객체가 로직을 수행하도록 노력하자 - 만약 getter를 통해 직접 멤버변수에 접근해야 한다면 외부에서 변강하지 못하도록 unmodifiableList를 설정해주자 - 테스트를 위한 코드는 구현 코드와 별개로 이루어져야 한다. - 메소드 시그니처 변형을 통해 테스트하기 좋은 메서드를 만든다. - 오류가 진행된 부분부터 다시입력을 받는다.=> 이 파트는 지난 주 요구사항에 제대로 반영되지 못해 더 신경썼다. 1) enum 클래스을 통한 관련있는 변수 관리 연관있는 변수끼리 같이 관리하기 위해 메뉴이름-가격-카테고리를 enum클래스로 만들어 ..
우테코 4주차 - [크리스마스 이벤트] 프로그래밍 요구사항 및 기능목록 작성 이번 4주차는 그동안 우테코에서 출제되지 않은 문제가 나온 만큼 온라인 상에서 어떤 소스도 참고하지 않고 오로지 본인의 실력만으로 승부해야 하는 문제였다. 특히, 요구조건이 상당히 많기에 그 조건을 잘 정리해두고 하나하나 정교하게 완성해나아가는 과정이 굉장히 중요했다. 그럼 우테코 미션의 마지막을 장식할 4주차 미션의 요구사항과 기능구현 목록을 정리해보자 먼저 이벤트 대상인 메뉴는 다음과 같다. 양송이수프(6,000), 타파스(5,500), 시저샐러드(8,000) 티본스테이크(55,000), 바비큐립(54,000), 해산물파스타(35,000), 크리스마스파스타(25,000) 초코케이크(15,000), 아이스크림(5,000) 제로콜라(3,000), 레드와인(60,000), 샴페인(25,000) 이벤트의 종..
우테코 4주차 - 3주차 공통 피드백 검토 3주차 공통 피드백이 왔다. 한번씩 살펴보자 1. 함수(메서드) 라인에 대한 기준 : 함수 15라인의 기준은 main에도 해당한다. 2. 비즈니스 로직과 ui로직을 분리하기 : 객체는 하나의 책임을 지녀야 한다. : 비즈니스 로직과 ui로직을 한 클래스가 담당하지 않도록 하자 3. 연관성이 있는 상수는 static final 대신 enum을 활용 public enum Rank { FIRST(6, 2_000_000_000), SECOND(5, 30_000_000), THIRD(5, 1_500_000), FOURTH(4, 50_000), FIFTH(3, 5_000), MISS(0, 0); private int countOfMatch; private int winningMoney; private Rank(in..
우테코 3주차 - [로또] : 회고 현재 우테코 3주차 기능 구현을 모두 끝내고 pull request로 제출도 완료한 상태이다. 원래 구현하면서 했던 생각을 하나하나 다 정리해볼 생각이었지만 생각보다 구현시간이 너무 오래걸렸고 내용도 많아서 차후로 미뤄두고 우선 마감이전까지 회고만 정리해보고자 한다. - 에러에도 내용이 담겨져 있어야 한다. 이전 주차까지는 예외사항 발생시 IllegalArgumentException만을 던져줌으로써 조건을 만족시켰으나, 이번 주차부터 어떤 상황에서 예외가 발현되었는지를 명시하라는 요구사항이 있었다. 이에 각 오류 유형별로 메소드를 분류하고 오류메시지를 던져주는 식으로 에러 안에 왜 에러가 발생되었는지 내용을 담으려 노력했다. public static void rangeException() { System..
우테코 3주차 - [로또] 요구사항 분석 + 기능구현목록 작성 우테코 3주차 미션은 [로또]였다. 자세한 내용은 다음 github 링크에서 볼 수 있다. 그럼 프로그래밍 요구사항에서 나타낸 이번 주차의 중요한 점들을 검토해보자 1. 프로그래밍 요구사항 분석 1-1. 프로그래밍 요구사항 indent(인덴트, 들여쓰기) depth를 3이 넘지 않도록 구현한다. 2까지만 허용한다. 예를 들어 while문 안에 if문이 있으면 들여쓰기는 2이다. 힌트: indent(인덴트, 들여쓰기) depth를 줄이는 좋은 방법은 함수(또는 메서드)를 분리하면 된다. 3항 연산자를 쓰지 않는다. 함수(또는 메서드)가 한 가지 일만 하도록 최대한 작게 만들어라. JUnit 5와 AssertJ를 이용하여 본인이 정리한 기능 목록이 정상 동작함을 테스트 코드로 확인한다. 1-2. 추가된 요구..
우테코 3주차 - 2주차 피드백 검토 벌써 우테코 3주차에 접어들었다. 2주차 피드백을 검토해보자 1. README.md 작성 관련 - 이 프로젝트가 어떤 프로젝트인지 - 어떤 기능을 담고 있는지 - 마크다운 문서 문법을 학습하고 적용할 필요가 있음 2. 기능목록 - 클래스 설계/구현, 함수 설계처럼 너무 상세하지 않게 => 언제든 변경이 가능하므로 - 예외적인 상황도 정리 - 기능구현을 하며 변경이 가능하므로 처음부터 완벽히 작성하기보다 계속 업데이트 => 죽은 문서가 아닌 살아있는 문서를 만들자 3. 값 하드코딩x => 하드코딩 : 데이터를 코드 내부에 직접 입력하는 것 : 상수(static final)을 만들고 이름을 부여해 변수의 역할을 드러내기 4. 구현 순서 = 코딩 컨벤션 클래스 구현 순서 : 상수 > 멤버 변수 > 생성자 > ..
우테코 2주차 - [자동차 경주] : TDD 작성 기능을 모두 구현하고 난 이후에는 Application Test 이외에 TDD를 몇가지 테스트하며 구현한 함수가 제대로 작동하는지 테스트해보았다. TDD에 아직 익숙하지 않은 만큼 먼저 다음 링크의 블로그를 통해 Junit test code 작성법을 익혔다. => 참고한 링크들 https://velog.io/@jkijki12/Java-TDD [Java] TDD 어떻게 하는가? TDD가 무엇이냐!!!!! 왜 자꾸 내눈에 보이는 것이냐!!! velog.io https://juhi.tistory.com/58 [TDD 공부-java] 3) 예외 처리 새로 배운 annotation @DisplayName(""): 테스트에 표시 이름을 붙이는 annotation @Disabled : 특정 테스트를 실행하고 싶지 않..
우테코 2주차 - [자동차 경주] : 기능 구현 기능 구현 목록 ## 기능 구현 목록 1. 자동차 이름 입력 받기[1] - 자동차 이름이 조건에 맞는지 확인하는 기능[1] - 쉼표를 기준으로 자동차 이름 목록을 문자열 리스트로 저장[1] 2. 시도 회수 입력받기[1] - 숫자가 정확히 입력되었는지 확인하는 기능[1] 3. 자동차 - 자동차 이름 생성하기[1] - 자동차 이동거리 생성하기[1] - 자동차 전진여부 함수 생성하기[1] 4. 자동차 목록 - 자동차 목록 생성하기[1] - 자동차 목록에 자동차 추가하기[1] - 턴마다 매턴 자동차 전진하는 함수[1] - 매 턴의 결과 출력함수[1] - 우승자 목록을 알려주는 함수[1] 5. 레이싱 게임 - 자동차 목록 생성 - 자동차 생성 - 입력된 턴수 만큼 반복 - 자동차 전진 - 턴별 실행결과 출력 - ..