1. 몰입(1) 1주차 과제 README를 읽고 되짚어 봤다.(2) cleancode 체크리스트를 읽고 되짚어봤다.(3) 자바 코드 컨벤션을 정리해봤다.(4) 커밋컨벤션을 정했다.Today in 프리코스
1. 몰입
(1) 1주차 과제 README를 읽고 되짚어 봤다.
java-baseball-6
woowacourse-precourse • Updated Apr 2, 2024
제출 전에 아래 내용들을 꼭 확인하자.
- 과제 제출 전 체크 리스트
- 테스트 실행 가이드
java -version으로 버전 17인지 확인, 인텔리제이에서도 17로 실행되는지 확인./gradlew clean test명령 실행할 때 모든 테스트 통과하는지 확인(BUILD SUCCESSFUL in 0s)
요구사항에 명시된 출력값 형식 안 지키면 0점모든 테스트 성공 못하면 0점- 미션 :
기능요구 사항,프로그래밍요구 사항,과제 진행요구 사항 - 기능 요구 사항 (하단의 별도 섹션에서 정리)
- 프로그래밍 요구 사항
- Random 값 추출은
camp.nextstep.edu.missionutils.Randoms의pickNumberInRange()활용 - 사용자가 입력하는 값은
camp.nextstep.edu.missionutils.Console의readLine()활용 - 과제 진행 요구 사항
JDK17에서 정상 동작 안하면 0점실행 시작점은
Application.main()build.gradle 파일 변경 불가외부 라이브러리 사용 불가Java 코드 컨벤션 가이드 준수 (🐱 이 부분은 따로 정리를 한 번 하자)프로그램 종료 시
System.exit() 호출하지 않기ApplicationTest의 모든 테스트 성공 안하면 0점파일, 패키지
이름 수정하거나 이동하지 않기camp.nextstep.edu.missionutils에서 제공하는 Randoms 및 Console API를 사용하여 구현하기기능 구현 전
docs/README.md에 구현할 기능 목록 정리(2) cleancode 체크리스트를 읽고 되짚어봤다.
한 메서드에 오직 한 단계의 들여쓰기만 허용했는가?
else 예약어를 쓰지 않았는가?
모든 원시값과 문자열을 포장했는가?
콜렉션에 대해 일급 콜렉션을 적용했는가? → 2주차부터 적용해줬다
3개 이상의 인스턴스 변수를 가진 클래스를 구현하지 않았는가?
핵심 로직 구현하는 도메인 객체에 getter/setter 없이 구현했는가? (DTO는 예외) → 콜렉션 클래스에만 허용해줬다..
메소드의 인자 수 최소로 제한했는가? (최대 3개)
코드 한 줄에 점을 하나만 허용했는가? (디미터 법칙) → 못지켰다..
메소드가 한 가지 일만 담당하도록 구현했는가?
클래스를 작게 유지하기 위해 노력했는가?
(3) 자바 코드 컨벤션을 정리해봤다.
과제 시작 전 어느 정도 유념하고 넘어가면 좋을 큼직한 것들만 정리했다. 디테일한 내용까지 전부 포함해서는 과제 기능 구현을 마친 후 리팩토링 전에 완전히 포스팅 따로 파서 정리해보려 한다.
(🐱 는 구글 가이드랑 다른 부분)
- 소스파일
- 소스파일 이름은 최상위 클래스 포함하는 대소문자로 구별하는 이름으로 짓기
- 소스파일 내 코드들은
라이센스나 저작권 정보>패키지 구문>임포트 구문>최상위 클래스의 순서로 구성하기 (하나의 빈 줄로 각 섹션 구분하기) - 패키지 구문은 줄바꿈 하지 않기
- 임포트 구문 역시 줄바꿈하지 않고, 와일드 카드 임포트나 static 같은 것들 사용하지 않기
- 클래스
- 소스 파일마다 최상위 클래스 하나를 정의하기
- 멤버들과 초기화 순서는 각자 논리적으로 정하기(새로운 메서드 마지막에 붙이는 방식은 바람직 x)
- 생성자나 동일한 이름을 가진 메서드들은 모아서 연속적이게 두기(private 멤버일지라도)
- 포맷팅
- if, else, for, do, while 구문에 대해 몸체가 없거나 한 줄의 구문에도 괄호 쓰기
- 괄호 쓸 땐
여는괄호앞:개행X,여는괄호뒤:개행O,닫는괄호앞:개행O,닫는괄호뒤:개행O(메소드,생성자,클래스)/개행x(else,콤마뒤)형태로 쓴다. (Enum은 예외) - 🐱 블록 열면 들여쓰기(스페이스 4번) 하기
- 🐱 120자 넘어가면 개행 넣기 ("문자"는 유니코드 코드 포인트를 의미)
- 🐱 클래스의 첫 번째 멤버나 초기화 앞에 있는 빈줄은 자유롭게 넣기
예약어(if, for, catch)와 괄호 사이,닫힌 중괄호와 예약어 사이에 공백 넣기- for 루프 헤더를 제외한 경우, 변수는 하나씩만 선언하기 (
int a, b;쓰지 않기) - 지역변수는 사용되는 지점 근처에서 선언하고, 초기화자 갖게 하거나 선언 바로 다음에 즉시 초기화하기
- 배열 초기화는 블록 구조처럼 하기
- 배열 선언 시 대괄호는 타입에 붙이기 (
String[] args사용 O,String args[]사용 X)
- 네이밍
- 변수명은
문자, 숫자, _만 사용하고, 특수 접두사 또는 접미사는 사용하지 않기 - 패키지명은 모두 소문자로 작성하기
- 클래스명은 UpperCamelCase로 작성하고 명사 또는 명사구를 사용하기 (인터페이스명은 때론 형용사 또는 형용사구도 가능)
- 테스트클래스명은 테스트 중인 클래스명으로 시작하고 Test를 끝에 붙여주기
- 메서드명은 lowerCamelCase로 작성하고 동사 또는 동사구를 사용하기
- JUnit 테스트메서드명은 밑줄을 사용해 논리적 구성 요소 구분하고, 각 구성 요소는 lowerCamelCase로 작성하기
- 상수명은 CONSTANT_CASE로 작성하기
- 파라미터명은 lowerCamelCase로 작성하고 한 문자로 작성하지 않기
- 지역변수명은 lowerCamelCase로 작성하고 final, 불변인 경우도 상수로 간주하지 않기
- Type변수명은
단일 대문자/단일 대문자 + 단일 숫자/클래스 형식 이름 + 대문자 T중 택하기
(4) 커밋컨벤션을 정했다.
- feat : 기능과 관련된 것(기능에 변화를 줌). 새로운 기능 추가.
- 요구사항 변경으로 기존 기능을 추가, 수정, 삭제
- fix : 코드 상 에러, 버그 픽스
- refactor : 기능과 관련되지 않은 것(기능에 변화 주지 않음).
- 기능 변화 아닌 코드 리팩토링
- 파일 추가/이동/이름 변경/삭제
- docs : 문서 추가/수정. 주석 추가/수정
- style : 개행, 들여쓰기, 공백..
- test : 테스트 코드 추가/변경
- chore: 배포, 빌드 작업
- release : 패키지 버전 올릴 때
- init : 프로젝트 초기 설정
Today in 프리코스
TIL 작성하기
몰입
1주차 과제 문제 읽기
코드 컨벤션 큼직한 것 위주로 정리하기
동반성장
커뮤니티에 오늘 올라온 글들 읽기
오늘의 각오
- 즐겁게 코딩하자!
- 급하게 생각하지 말고 천천히 음미하면서 프리코스에 임하자!
오늘 구현을 바로 들어가려 했는데,
코딩 컨벤션 읽고 정리하는게 재밌어서 생각보다 여기에 시간을 많이 쏟아버렸다,,,
물론 구현 후 보나 지금 보나 어쨌든 보긴 해야 했던 거라 괜찮다고 생각한다.
그렇지만 내일은 꼭 구현에 들어가자. 더 늦어지면 리팩토링할 시간이 부족할 거 같다
1일차_둘러보기, 환경설정하기
Oct 19, 2023
DIARY_DEVELOP
2일차_컨벤션 정리하기
Oct 20, 2023
DIARY_DEVELOP
3일차_설계에 대해 고민하기
Oct 21, 2023
DIARY_DEVELOP
4,5일차_MVC 온전히 이해하기
Oct 22, 2023
DIARY_DEVELOP
6일차_설계를 코드로 구현하기
Oct 24, 2023
DIARY_DEVELOP
7일차_리팩토링과 마무리하기
Oct 25, 2023
DIARY_DEVELOP
8,9일차_코드 리뷰 통해 객체지향에 다가가기
Oct 27, 2023
DIARY_DEVELOP
10일차_지난 과제 돌아보며 객체지향 이해하기, 의존성과 설계의 관계 맛보기
Oct 28, 2023
DIARY_DEVELOP
11일차_객체지향을 미션 설계에 적용하기(with [책] 객체 지향의 사실과 오해)
Oct 29, 2023
DIARY_DEVELOP
12일차_기능 별로 구현하며 단위 테스트의 필요성 느끼기 (with [책]
자바와 JUnit을 활용한 실용주의 단위 테스트)Oct 30, 2023
DIARY_DEVELOP
13,14일차_일급 컬렉션과 레코드 적용해 리팩토링하기
Oct 31, 2023
DIARY_DEVELOP
15, 16일차_코드 리뷰를 통해 성장하기(1)_다른 사람의 코드 읽으면 배운 것 정리
Nov 2, 2023
DIARY_DEVELOP
17일차_코드 리뷰를 통해 성장하기(2)_내 코드 개선하며 배운 것 정리
Nov 4, 2023
DIARY_DEVELOP
18일차_내가 찾은 설계 방법 공유하기, 공유에 대해 고민하기
Nov 5, 2023
DIARY_DEVELOP
19일차_지난 과제 피드백 고려해 설계하기
Nov 6, 2023
DIARY_DEVELOP
20, 21일차_일단 돌아가는 코드를 만들기
Nov 7, 2023
DIARY_DEVELOP
22일차_현재 도움이 될 것 생각하기 (디자인패턴과 mvc2 과감히 패스)
Nov 9, 2023
DIARY_DEVELOP
23일차_코드리뷰하기 (feat. converter 파고들기)
Nov 10, 2023
DIARY_DEVELOP
24일차_기획을 문서화하기
Nov 11, 2023
DIARY_DEVELOP
25일차_설계하며 고민하기
Nov 12, 2023
DIARY_DEVELOP
26, 27일차_구현하며 고민하기
Nov 13, 2023
DIARY_DEVELOP
