티스토리 뷰
4,5,6주차 미션 : 로또 게임 with Console/Web UI
https://github.com/woowacourse/java-lotto
후기
- 오랜만에 다시 페어가 아닌 혼자 코딩하다보니, 습관적으로 코딩하게되는 부분이 생긴다.
- 항상 의식적으로 코딩하도록 조심해야겠다.
- 물어보고 토론할 페어가 없어서 불편한 점도 있었다. 더 움직이며 발품팔걸 그랬다.
- web/DB 관련해선 고민많았으나, 이번단계에서 욕심내지않고 차차 알아가기로.
내 코드 피드백
Collection들의 다양한 메소드를 활용하자.
이 경우, 별도의 initialize() 초기화 메소드 대신 getOrDefault()를 사용하면 됬었다.
HashMap (Java Platform SE 8 )
자바 HashMap을 효과적으로 사용하는 방법
로또 자동 생성에 Collections.shuffle() 메소드를 사용할 수 있다.
Collections (Java Platform SE 7 )
Collections의 다양한 메소드들을 좀더 알아볼 필요성이 느껴진다.
■ CU코치님의 자바8 람다&스트림 강의
- PDF24. 익명 클래스 vs 람다식 : 람다식이 더 빠르고, 더이상 익명클래스를 사용할 이유가 없다~
- PDF51. Optional 반환된다. .get()과 같이 사용하며, null에서 안전
- PDF62. 쉽게하는 실수, forEach에서 연산을 하지말자. 반복문 쓰는거와 다를바없다.
java.util.stream (Java Platform SE 8 ) - Lazy Evaluation
How to Speed Up Lo-Dash ×100? Introducing Lazy Evaluation.
■ 함수형 프로그래밍이란 ?
읽고나니, 메소드안에서 무슨일을 하는지 모르게 숨기는것보다, 입출력으로 구성하는것이
Side Effect도 줄일수있고, 테스트하기도 편할것같다.
(번역) 함수형 프로그래밍이란 무엇인가? – Jooyung Han (한주영) – Medium
(번역) 어떤 프로그래밍 언어들이 함수형인가? – Jooyung Han (한주영) – Medium
중복 줄였다고 좋아하고 있었는데, 생각해보니 콘솔 한정..;
오늘 체스미션을 하면서도 느꼈는데, 개발할때 객체의 역할에 대해 의식적으로 신경을 좀더 써야겠다.
List는 Lotto 객체의 인스턴스 변수라서, Lotto 객체 내부에서 처리하는 것이 좀더 자연스럽다 !
https://github.com/woowacourse/java-lotto/pull/31/commits/52fc9b16b0ec77233750c917056d08da1e483b2f
그렇게 오래 고민해봤는데 왜 생각치 못했을까, 아직 갈길이 멀다. 이제 알았으니 됬다.
자바 관례 !
개발하면서 정의부를 중점적으로 생각했었는데, 생각해보니 선언부를 잘 읽히도록 해야할 것 같다.
그래야 다른 개발자들이 읽기쉬운 코드가 나오기도 하고, 구현방식이 실제 사용되는 문맥과 함께 자연스럽게 구성될 것 같다.
인텔리제이의 밑줄을 확인하게 되는 습관을 갖게 되었다.
첫 구현 땐 스트림도 전혀 생각안했었는데, 이젠 for문을 무작정 쓰기 전에 스트림을 고려해보게 되었다.
자바8 스터디 공부한거 활용도 할겸.
// Todo : DB 관련된 부분은 이제 시작이라서, 공부 시작하고 앞으로 계속 신경써야겠다.
uri는 중간 슬래시를 이용해보자
완전히 인정
실무에선 그렇다고 한다 ! 관련해서 사람들과 이야기 해봐야 할듯
뒤에서 다시 나오긴 하는데, key값은 왠만하면 bigint로. 29억 금방 쓴다고 한다.
허점
다른 사람들의 피드백
나중에 다시보면 나도 기억 못할 것!
나도 했던 고민. 유익한 discussion 같다
EnumMap 이란 것도 있다.
if문의 조건절이나 이런 부분들은, 길어질 때 분리해서 가독성을 높이면 좋을 것 같음
팩토리 사용할땐 왜 사용하는지 고민해보자
고민해봐야겠다.
지금 단계에서의 선택지. null을 반환하지말고, Optional or 예외처리
다행. WebViewBuilder 만들었던것처럼, 아직은 JS에 익숙치않으므로 일단 이렇게라도.
Web, DB 관련 - Todo..
클래스의 패키지 위치
첫번째 사진은 정확히 맞는진 모르겠으나, 전체적으로 내 생각과 비슷하다.
두번째 사진은 서비스를 static이 아닌 인스턴스로 관리할 경우의 이점. 하지만 상태관리를 갖게하진 않는다고 한다.
현구님 DB관련 피드백
PreparedStatement 객체 재사용하기 :: Outsider's Dev Story
나중엔 이 말을 제대로 이해할 수 있을 것
레이어와 DTO 관련
https://github.com/woowacourse/java-lotto/pull/9#discussion_r289811731
DTO의 사용범위 / Entity와의 변환에 대한 논의
커넥션 관리는 Try-with-resources
How should I use try-with-resources with JDBC?
DAO를 singleton으로 만드는 연습 : 이후 체스미션에서 적용
static vs singleton
이때의 connection 관리 등의 주제
Singleton vs Static class 차이점
템플릿 : JDBCTemplate을 이용한 DAO 중복제거 => 이후 체스미션에서 적용해보았음.
효율적인 관리에 대하여
각 컨트롤러로 분리 ?
기타 피드백들
// Todo : 어렵고 생소하지만, 앞으로 차차 도전해보자
역시 결론은, 조급해하지말고 차차 !!
'우아한 테크코스' 카테고리의 다른 글
우아한 테크코스) Lv2 - 1주차 [블로그 - Spring Boot/게시글 관련 기능 구현] 미션 후기, 코드리뷰 (0) | 2019.09.13 |
---|---|
우아한 테크코스) Lv1 - 6~8주차 [Chess] 미션 후기, 코드리뷰 (0) | 2019.09.13 |
우아한 테크코스) Lv1 - 3주간의 페어프로그래밍 회고록 (0) | 2019.09.13 |
우아한 테크코스) Lv1 - 3주차 [Coordinate] 미션 후기, 코드리뷰 (0) | 2019.09.13 |
우아한 테크코스) Lv1 - 2주차 [Ladder] 미션 후기, 코드리뷰 (0) | 2019.09.13 |
- Total
- Today
- Yesterday
- 프로그래머스
- C
- graph
- webhacking.kr
- reversing
- 해외여행
- Algorithm
- 웹해킹
- 우아한 테크코스
- 회고
- brute-force
- git
- bfs
- Stack
- queue
- Data Structure
- Android
- Android Studio
- Vo
- Java
- OneToMany
- dfs
- sort
- javascript
- socket
- 리버싱
- mysql
- FRAGMENT
- 개발자
- JPA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |