프로그래밍 요구사항
1주차
- JDK 21 버전에서 실행 가능해야 한다.
- 프로그램 실행의 시작점은 Application의 main()이다.
- build.gradle 파일은 변경할 수 없으며, 제공된 라이브러리 이외의 외부 라이브러리는 사용하지 않는다.
- 프로그램 종료 시 System.exit()를 호출하지 않는다.
- 프로그래밍 요구 사항에서 달리 명시하지 않는 한 파일, 패키지 등의 이름을 바꾸거나 이동하지 않는다.
- 자바 코드 컨벤션을 지키면서 프로그래밍한다.
- 기본적으로 Java Style Guide를 원칙으로 한다.
- 라이브러리 camp.nextstep.edu.missionutils에서 제공하는 Console API를 사용하여 구현해야 한다. 사용자가 입력하는 값은 camp.nextstep.edu.missionutils.Console의 readLine()을 활용한다.
2주차
-
indent(인덴트, 들여쓰기) depth를 3이 넘지 않도록 구현한다. 2까지만 허용한다.
- 예를 들어 while문 안에 if문이 있으면 들여쓰기는 2이다.
- 힌트: indent(인덴트, 들여쓰기) depth를 줄이는 좋은 방법은 함수(또는 메서드)를 분리하면 된다.
-
3항 연산자를 쓰지 않는다.
-
함수(또는 메서드)가 한 가지 일만 하도록 최대한 작게 만들어라.
-
JUnit 5와 AssertJ를 이용하여 정리한 기능 목록이 정상적으로 작동하는지 테스트 코드로 확인한다.
-
라이브러리 camp.nextstep.edu.missionutils에서 제공하는 Randoms 및 Console API를 사용하여 구현해야 한다. Random 값 추출은 camp.nextstep.edu.missionutils.Randoms의 pickNumberInRange()를 활용한다. 사용자가 입력하는 값은 camp.nextstep.edu.missionutils.Console의 readLine()을 활용한다. 사용 예시 : Randoms.pickNumberInRange(0, 9);
-
기본적인 Git 명령어를 숙지한다 + Git으로 관리할 자원을 고려한다
-
커밋 메시지를 의미 있게 작성한다
-
커밋 메시지에 이슈 또는 풀 리퀘스트 번호를 포함하지 않는다
-
풀 리퀘스트를 만든 후에는 닫지 말고 추가 커밋을 한다
-
오류를 찾을 때 출력 함수 대신 디버거를 사용한다
-
이름을 통해 의도를 드러낸다
-
축약하지 않는다
-
공백도 코딩 컨벤션이다
-
공백 라인을 의미 있게 사용한다
-
스페이스와 탭을 혼용하지 않는다
-
코드 포매팅을 사용한다
- intelliJ IDEA : Ctrl+Alt+L
- Eclipse : Ctrl+Shift+F
- Visual Studio Code : Shift+Alt+F
-
Java에서 제공하는 API를 적극 활용한다
-
배열 대신 컬렉션을 사용한다
3주차
-
함수(또는 메서드)의 길이가 15라인을 넘어가지 않도록 구현한다.
-
함수(또는 메서드)가 한 가지 일만 잘 하도록 구현한다.
-
else 예약어를 쓰지 않는다. else를 쓰지 말라고 하니 switch/case로 구현하는 경우가 있는데 switch/case도 허용하지 않는다. 힌트: if 조건절에서 값을 return하는 방식으로 구현하면 else를 사용하지 않아도 된다.
-
Java Enum을 적용하여 프로그램을 구현한다.
-
구현한 기능에 대한 단위 테스트를 작성한다. 단, UI(System.out, System.in, Scanner) 로직은 제외한다.
단위 테스트 작성이 익숙하지 않다면 LottoTest를 참고하여 학습한 후 테스트를 작성한다. -
camp.nextstep.edu.missionutils에서 제공하는 Randoms 및 Console API를 사용하여 구현해야 한다. Random 값 추출은 camp.nextstep.edu.missionutils.Randoms의 pickUniqueNumbersInRange()를 활용한다. 사용자가 입력하는 값은 camp.nextstep.edu.missionutils.Console의 readLine()을 활용한다.
사용 예시
1에서 45 사이의 중복되지 않은 정수 6개 반환
Randoms.pickUniqueNumbersInRange(1, 45, 6);