1. 코드 리뷰를 통해 배운 것(간단히)
- 일급콜렉션
- 예를 들면 int가 아니라 digit이란 또 다른 객체로 포장하는 것을 말한다.
- 즉, 최소한의 단위까지 클래스로 포장하는 걸 일급콜렉션이라 한다.
- 객체지향 생활체조의 원칙
- 한 메서드에서 한 단계 들여쓰기만 사용하자
- else 예약어를 쓰지 말자
- 모든 원시값과 문자열을 포장하자
- 한 줄에서 한개의 점만 사용하자
- 축약하지 말자
- 모든 엔티티를 작게 유지하자
- 클래스는 인스턴스 변수 두 개를 넘지 않게 하자
- 일급 컬렉션을 사용하자
- Getter / Setter / Properties를 사용하지 말자
- 클래스는 한가지 상태의 유지,관리를 하는 목적을 가지는데, 이를 외부의 행위를 통해 상태를 바꿀수 있다는것은 캡슐화를 지키지 못하는것이 된다. 혹시 값을 바꾸고 싶다면 객체를 새로 만들면 된다.
원칙
- 네이밍 개선
- 타입을 변수명에 넣는 건 헝가리식 표기법인데 요즘은 사용하지 않는다.
- 객체의 결과를 문자열로 반환하는 함수는
toString()으로 오버라이드해서 사용하는 것도 추천한다. - 내 코드
Turn
GameContinuationOption
- 정적 팩토리 메서드의 장점
- 인스턴스 생성에 대한 이름을 부여할 수 있다.
- 똑같은 애들 만들 때 메모리 낭비 안한다.
- 내 코드
BaseballGameController
2. 코수타/공통 피드백에서 인상 깊었던 것
인상 깊었던 부분만 정리하고 간단히 내 생각(🐱)을 덧붙이겠다.
- 이름을 통해 의도를 드러낸다
- 변수 이름, 함수(메서드) 이름, 클래스 이름을 짓는데 시간을 투자하라. (🐱 이름 짓는 게 제일 어렵고 고민이 많이 되는 거 같다)
- 연속된 숫자를 덧붙이거나(a1, a2, ..., aN), 불용어(Info, Data, a, an, the)를 추가하는 방식은 적절하지 못하다. (🐱 이번 과제에서 digit 단위까지 3자리 숫자를 나눈 분들이 계셨는데 digit1, digit2 식보단 firstDigit, secondDigit이 나았겠다 싶었다)
- 축약하지 않는다
- 의도를 드러낼 수 있다면 이름이 길어져도 괜찮다.
- 클래스와 메서드 이름을 한 두 단어로 유지하려고 노력하고 문맥을 중복하는 이름을 자제하자. (🐱 Game 클래스의 메서드 중 하나 이름을 playGame이라 할지 play라 할지 고민되었는데 play라 하길 잘했다)
- Java에서 제공하는 API를 적극 활용한다
- 함수(메서드)를 직접 구현하기 전에 Java API에서 제공하는 기능인지 검색을 먼저 해본다. (🐱 String 관련 api들을 적극 활용하였는데 잘한 거 같다)
- 배열 대신 Java Collection을 사용한다
- Java Collection 자료구조(List, Set, Map 등)를 사용하면 데이터를 조작할 때 다양한 API를 사용할 수 있다. (🐱 Array 와 ArrayList 사용에 고민이 된다면 ArrayList를 사용해야 할 또 하나의 이유가 될 거 같다)
인텔리제이 코드 포매터
- 이전 플젝에선 네이버핵데이 코딩 컨벤션을 적용해서 코드 포매터를 사용해본 적이 있다.
- 우테코도 스타일 파일이 있길래 적용해줬다.
- 1주차부터 사용하긴 했는데 이번에 컴퓨터 옮기면서 다시 적용하는데 까먹었길래 다시 다음번에 적용할 일이 생길 때를 대비해 여기다 간단히만 정리해둔다.
- Settings > Editor > Code Style > Java > 톱니바퀴 > Import Scheme > Intellij IDEA code style XML > 다운로드한 파일 선택(WootecoStyle) > Enable EditorConfig Support 설정 체크
- Tools > Actiosn on Save > Reformat code, Optimize imports 체크
- 이제 일일히 ⌥⌘L 할 필요 없이 ⌘S 면 알아서 저장과 동시에 포맷팅 파일 내용대로 자동정렬된다.
Today in 프리코스
TIL 작성하기
준비
코수타 보고 정리하기
공통 피드백 내용 정리하기
몰입
지난 과제 스스로 리뷰하기
동반성장
코드 리뷰 하기
내 코드 리뷰 답변 달기
- 이번주 계획
목,금 | 지난 과제 리뷰 | 이전 과제 발표 스터디 참여 + 코수타 듣기 |
토,일 | 기능 명세 작성 + 기능 구현 | 커뮤니티 함께-자라기 참여 |
월 | 테스트 코드 작성 | ㅤ |
화 | 리팩토링 + 테스트 결과 확인 | ㅤ |
수 | 회고 작성 + 검토 + 제출 | 201 Created 자바 스터디 글 작성 |
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
