📜 제목으로 보기

요구사항 체크리스트 모음

1주차

  • 자바의 버전이 8버전인가
  • 자바 코드 컨벤션을 지키는가
  • RandomspickNumberInRange()를 사용했는가
    • (3주차) pickNumberInList()를 사용했는가
  • ConsolereadLine()을 사용했는가
  • 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위주로 코드 짜보기
    1. max( Comparator)를 쓰더라도 1번에 max값을 충족시키는 여러개의 객체를 구하기는 쉽지 않음.
    2. mapToInt( ) 집계값 구한 뒤 -> 일치하는 객체 List(우승자들) 구하는 방식
    3. 간단한 출력문은 toString()오버라이딩 해서 쉽게 출력되도록 이용 하기
  • 상수들 및 에러 메세지들의 리팩토링
    • IDE를 이용하면 정말 간단하게 해결할 수 있음을 깨닫게 됨.

3주차 과제 수행시 키포인트

  • 객체의 각 필드에도 wrapping class를 적용함
    • 원시변수 및 if문의 최소화 -> 래핑변수 및 stream의 활용
  • 정규식 패턴검사에 stream을 활용함
  • List대신 Map 자료구조 래핑하여 DB처럼 사용함
    • 상품 정보등은 List를 포장한 일급컬렉션으로 만들어놓고 정보조회시 사용함
  • 싱글톤 객체를 활용하여 전체 로직을 운영함
    • controller 반복문의 조건변수도 싱글톤객체에 메세지를 보내니 상태에 따른 값을 얻어와서 구현하기 수월했음
  • 자판기 작동 로직에 대해 고민하여 기능 구현 목록을 작성함