목표
git, Java, 미션 사이클 익숙해지기
신경 썼던 점 & 배운 점
- else 최대한 안 쓰기
- 요구 사항에서 불변 사항들 상수화(final) 하기
- 하나의 기능만 하는 함수들로 분리해서 구현하기
- Angular Js Commit Convention
- 메소드, 변수, 인자 등등 의도를 드러내는 네이밍
- 기능 명세 작성 후 기능 별 커밋
Review
- 요구 사항이 애매하면 현실 세계에서 경우의 수를 생각해본다.
- 바뀔 가능성이 있는 부분에 대해서는 Class -> Interface 의존
- UserRepositoryImpl implements UserRepository
- opened PR의 경우 추가 commit은 자동 반영된다.
- 의미 있는 commit message
- 단순히 Convention을 지키는 것 + 읽는 사람이 파악하기 쉽도록 한다.
- 반복문에서 i, j, k 등의 네이밍 사용을 지양한다.
- for (int i : integers) -> for (int integer : integers)
느낀 점 & 생각
- 문제 자체의 난이도는 쉬웠다. (프로그래머스 레벨 1~2 정도)
- 얼마나 세세하게 커밋을 해야 할 지, 커밋 메세지는 어떻게 쓸 지 등에 대해 감이 없다.
- Intellij의 Command + Option + L 로 코드 정렬한 것도 커밋 해야 하는가?
- 다음 작업 때에 끼워 넣거나 같은 스코프의 이전 커밋에 합치는 게 낫지 않은가?
- Solution 클래스 또한 네이밍을 보아 로직을 포함해도 된다고 생각해서 모든 것을 함수화 하지는 않았다.
- Stream을 사용하는 것이 가독성이 좋을 때가 많은 것 같다.
- Stream API 특성 상 여러 로직(sorted, map, filter)을 반영할 때가 많은데 SRP에 어긋나지 않는가?