우테코 프리코스 3주간 요구사항들
우테코 프리코스가 나에게 준 선물들 정리
📜 제목으로 보기
요구사항 체크리스트 모음
1주차
- 자바의 버전이 8버전인가
- 자바 코드 컨벤션을 지키는가
-
Randoms
의pickNumberInRange()
를 사용했는가-
(3주차)
pickNumberInList()
를 사용했는가
-
(3주차)
-
Console
의readLine()
을 사용했는가 - 3항 연산자를 쓰지 않는가
- indent depth가 2이하인가
- 하나의 함수가 한 가지 일만 하도록 하였는가
- (추가) 하드코딩 하진 않았는가
- (추가) style check 및 convention 적용 하였는가
-
gradlew.bat clean test
의 모든 테스트가 통과하는가 - 과제 제출시 우테코 플랫폼에서도 제출하였는가
2주차(피드백 및 과제에서 추가)
- 함수(또는 메소드)의 길이가 15라인을 넘어가지 않도록 구현한다.
-
else 예약어를 쓰지 않는다
- 기능 목록을 업데이트하고 재검토 한다
- Class 구현순서( 상수->멤버 변수->생성자->메서드) 지키기
3주차
- 기능 목록에 예외상황도 기록한다.
- 일급컬랙션 및 단일변수도 포장한다.
- 변수를 줄이려고 노력한다.
주차별 미션 수행 키포인트 정리
1주차 과제 수행시 키포인트
- 개발 시작전에 요구사항 충분히 파악하기
- 기본 프로젝트 구조 및 뼈대 코드 작성하고 시작하기
- 라이브러리 확인 및 컨벤션 포맷터 적용, 버전 확인 등 기본적인 협업환경 확인하기
- Application에 개발하지 않고 각 class에서 개발하여 구동하기
- scanner 등 input, outview은 static으로 작성해서 재활용하기
- 문자열type의 숫자입력시 검증 여러가지 해보기(길이-> 포맷-> 범위-> 중복여부 등 기타)
- else 안쓰고, 반복문안에 if는 method로 빼서 method내에서 하여 indent줄이기
- 무한반복시 조건변수를 결과로 업데이트 하면 됬으나, 재시작 등 추가분기가 필요한 경우, status변수 추가 도입하기
- 상수도 반복되니 따로 class로 빼기
- 중복확인은 list길이로 하는 데, stream으로 편하게 하기
- list 중복확인 : list.stream().distinct().count()
- 입력받은 문자열배열 -> 정수 list변환 : Arrays.stream(). mapToint(Integer::parseInt).boxed().collect(Collectors.toList());
2주차 과제 수행시 키포인트
-
Live template을 활용함.
- 1주차와 반복되는 input코드 등을 미리 작성해둠.
-
fork한 repo를 clone후에 branch부터 바꾸자!
- 실수로 main브랜치에 commit and push하여 새로 작성하는 경우가 발생했었음.
-
일급컬렉션 사용하여 객체List에 대한 검증 및 관련 로직을 모음.
- 쪼개어지는 Input을 받을 때 ex> Names -> Name 미리 names에서 검증을 다 해버리는 전략을 세움
- 쪼개어놓고 내부에서 검증할 시, 다시 입력받으러 가기가 쉽지가 않음.
- 조건절에서 getter쓰지말고, 객체.부등호를메서드화() 시켜 메세지보낼 것. 비교시 필요한 값은 메서드의 파라미터로
- 입력 받은 int 변수를 포장한 래핑클래스를 만들고 countdown 메서드 구현해보기
- 학습했던 stream위주로 코드 짜보기
- max( Comparator)를 쓰더라도 1번에 max값을 충족시키는 여러개의 객체를 구하기는 쉽지 않음.
- mapToInt( ) 집계값 구한 뒤 -> 일치하는 객체 List(우승자들) 구하는 방식
- 간단한 출력문은 toString()오버라이딩 해서 쉽게 출력되도록 이용 하기
- 상수들 및 에러 메세지들의 리팩토링
- IDE를 이용하면 정말 간단하게 해결할 수 있음을 깨닫게 됨.
3주차 과제 수행시 키포인트
- 객체의 각 필드에도 wrapping class를 적용함
- 원시변수 및 if문의 최소화 -> 래핑변수 및 stream의 활용
- 정규식 패턴검사에 stream을 활용함
- List대신 Map 자료구조 래핑하여 DB처럼 사용함
- 상품 정보등은 List를 포장한 일급컬렉션으로 만들어놓고 정보조회시 사용함
- 싱글톤 객체를 활용하여 전체 로직을 운영함
- controller 반복문의 조건변수도 싱글톤객체에 메세지를 보내니 상태에 따른 값을 얻어와서 구현하기 수월했음
- 자판기 작동 로직에 대해 고민하여 기능 구현 목록을 작성함