공부 내용 및 활동 내용 |
|
1. 코드 리뷰
|
음.. 오늘도 책이 잘 안 읽힌다. 문제가 무엇일까.. 음~~ 책 내용이 점점 어려워져서 안 읽히는 것 같다..
방법을 빠른 시일 내 찾아야 할 것이다.
코드카타 시간에는 주어진 문제를 풀지 못했다.. 아니 모르겠다.
- 알고리즘: 그리디에 관한 문제였는데 어떤게 최적의 해인지 판별을 못해서 결국 답지를 보고 이해했다.... 쓰읍
- SQL: 아 테이블이 3개다.. 어떻게 엮는지 모르겠다.. 서브쿼리? Join이 2개가 가능한가...?
결국 두 문제를 스킵하고 아침회의를 시작했다. 찝찝한 하루다
1. 코드 리뷰
개인과제 lv 4를 끝내서 다 한 팀원과 함께 코드 리뷰를 시작했다. 서로 코드를 보면서 코드가 어떻게 짜야 가독성이 좋은지에 대해서 교류를 좀 해보았다. 물론 아직 다른 팀원은 리팩터링을 시작하지 않아, 아직 깔끔하지 않고 중복코드도 많이 보였다. 그렇기에 내가 공부한 방식을 간략하게 알려주었다.
물론 그 팀원 것을 보면서 내가 잘못한 부분도 적지않게 보여서 굉장히 도움 되었던 시간인 것 같다. 서로 코드를 공유하면서 그 코드에 대해서 설명하는게 개인적으로는 도움이 많이 된다고 생각한다. 코드를 되짚어보면서 코드 가독성도 확인해볼 수 있기 때문이다.
코드리뷰 덕분에 잘못된 부분에 대해서 고칠 수 있었고, 다른 사람이 어떤식으로 코드를 짜는지 이해를 할 수 있었던 것 같다. 코드 짜는 방식에 대해서는 정답은 없지만 어떤게 가독성이 좋고, 어떤게 가독성이 좋지 않은지 대충은 보이기 시작했다.
2. 튜터님의 피드백
- 멀티 스레드?
-> 피드백중 멀티 스레드에 관한 내용이 있어서 도저히 해석이 안되서 찾아가서 여쭤보았다.
내가 구현한 클래스 중 이게 올바른 값인지 판별해주는 Validator 클래스가 있었다. 그 클래스 안에 전역 변수인 validNumber가 있었는데 setValideNumber()를 통해 저장해주게 했었다. 하지만 그 방식은 멀티스레드로 접근했을 때, 다른사람이 숫자를 입력하면 값이 바뀌며 제대로 계산이 제대로 작동하지 않는다.
그렇기에 Validator 라는 클래스에서 값을 받고 바로 처리해주라고 하셨다. Validator는 그 숫자가 올바른 숫자인지 판별해주는 클래스이지, 값을 저장해 그 값을 호출할 수 있는 것이 좋지 않은 구조였다.
- 네이밍 컨벤션?
-> 기능을 추가하다 보니 클래스가 비대해져서 클래스명과 다르게 여러 기능을 수행하였다.
그렇기에 방법은
1) 클래스 이름을 바꾸기
2) 클래스 중 본질적으로 역할이 비슷한 클래스를 찾아 넣어주기
등을 생각해 볼 수 있었다.
또한, print를 해주는 함수가 있는데 단순히 countStrikeAndBall 이런식으로 지으면 내가 보았을 때는 이해가 가지만 남이 보았을 때는 착오를 일으킬 수 있다.
그렇기에 이것을 다른 클래스에 넣어주거나 printCountStrikeAndBall로 명명해줘야 할 것 이다.
- Git 컨벤션?
-> git 컨벤션은 feat, fix, refactor 등 다양하게 존재한다. 그렇기에 적당한 단계를 나누어 적절히 push를 해주어야 할 것이다. 서서히 commit의 횟수가 많아짐에 따라 컨벤션이 굉장히 중요하다고 느낀다.
내가 언제 어떻게 수정했는지 history를 볼 때, 이 컨벤션이 지켜지지 않는 commit을 본다면 굉장히 난해할 것이다.
아 벌써 난해하다... 열심히 commit 해보면서 개선해나가야겠다.
- Git push 시기?
-> 적절히 commit을 하기위해서 이기도 하고, 나중에 PR 했을 때, 코드를 읽는 사람도 여러가지 기능이 구현된 코드를 읽기 난해할 것이다. 그렇기에 기능이 구현되는 순간을 단계별로 잘 나눠서 push를 해주어야할 것이다.
- 코드 수정할 때, Git branch 활용?
-> 코드를 수정할 때, 이때까지 그냥 브랜치를 생성하지 않고 바로 코드 작성을 하였다. 정말 위험하다....
물론 뭐 작성한 코드를 주석처리해가면서 처리할 수 있겠지만 더 복잡한 코드를 만난다면 이렇게 코드를 짜면 안될 것이다. 그래서 git branch를 통해 master를 복사하고 복사한 브랜치를 통해 기능을 구현한 뒤, push를 master에게 한다. 그 뒤, 책임자가 PR을 확인하고 Merge 하면 될 것이다.
3. Git Readme 작성
아 뒤로가기 잘못 눌러서 1시간 작성한 것을 날려먹었다.
일단 뭐 실수한 부분은 어쩔 수 없는 부분이다. 그렇기에 좋게 생각하고 열심히 재작성해보았다.
아직 프로젝트가 설명할게 크게 없지만 학습삼아 열심히 작성해보았다.
https://github.com/kimuky/programming_basic_subject_2
아직은 설명할게 없어서 제목, 정보, 소개, 트러블슈팅 정도만 정리를 했다. 마크다운 방식이라 정말 어색했지만 쓰다보니 편한 것 같기도하고 정말 묘했다.. 아직은 이모지도 없고 사진크기도 마음대로지만 개선해나갈 것 이다.
4. 코딩테스트
오늘 한 문제
- SQL
- DFS
- 완전탐색
- SQL
오늘 못 푼 코드카타가 걸려서 알고리즘 쪽은 이미 답지를 봐버려서 당분간은 풀지 않을 계획이고
SQL을 다시 봤다. 음.. 문제 자체는 굉장히 쉬웠다.
하지만 Join을 두번 써도 되냐 안 되냐가 정말 헷갈렸다.
근데 답지를 보는 것은 더욱 싫기에 그냥 join을 하나해보고 그다음 join을 하나 더 작성했더니 문제 없이 작동한다.. 정말 별거아니다... 음 join을 두번써서 테이블을 3개 엮을 수 있다는 것이 정말 놀라웠다. LV4 였지만 답지를 안 보고 풀어서 기쁘다..
- DFS
저번에 못 풀었던 프로그래머스 문제가 있었다. 단순히 조합을 통해 푸는 것인데 삼중 for문을 쓴다면 풀리는 문제였지만 그렇게 풀기 싫었고, 다른 방법이 있을 것이라고 생각했다. 음.. 역시나 답지를 보며 찾아보니 자바에서는 백트래킹(DFS) 개념으로 푸는 방법이 있었다.
이미 답지를 봤기에 일주일간 풀지않았고, 일주일이 지나 다시 한번 풀어보았다. DFS 강의를 본 탓인지, 답지를 기억한건지 정말 쉽게 풀렸다.
- 완전탐색
DFS 개념을 통해 추가적으로 DFS 문제들을 더 풀려했지만 손도 못 될 것 같다.. 문제가 도저히 감이 안 온다.. 그렇기에 DFS를 활용할 수 있는 완전탐색 문제들을 접근해보았다. 음 기본적인 DFS 개념이 있어서 문제를 읽으면서 어떻게 풀어야할지 바로 감이 왔다. 물론 시간은 20분 정도 소요된 것 같지만 이제는 이런 DFS 백트래킹은 이해가 가기 시작했다.
오늘 무엇을 공부한지 전혀 기억이 나지 않는다. 공부에 집중이 잘 안 된다. 무엇이 문제일까 고민의 연속이다. 그래서 내일부터는 1 ~2시간 기준으로 지금 뭐하고 있는지 정리를 해보아야겠다. 아 시간이 갈수록 알고리즘 SQL 자바 어려워진다. 음... Spring을 잘 할 수 있을지 모르겠다. 할 건 많은데 도대체 뭐가 우선순위인지 모르겠다. 답답한 하루다. 일단 닥치는대로 공부해봐야겠다.
'스파르타(부트캠프) > TIL (Today I Learned)' 카테고리의 다른 글
[내일배움캠프] 스파르타 19~ 20일차_24.10.23~ 24 (2) | 2024.10.25 |
---|---|
[내일배움캠프] 스파르타 17일차_24.10.21 (3) | 2024.10.21 |
[내일배움캠프] 스파르타 16일차_24.10.18 (3) | 2024.10.18 |
[내일배움캠프] 스파르타 14일차_24.10.16 (2) | 2024.10.16 |
[내일배움캠프] 스파르타 13일차_24.10.15 (0) | 2024.10.15 |