해당 글을 백기선 님의 자바 스터디 4주차 과제를 공부하고 공유하기 위해서 작성되었습니다.

4주차 회고

   4주차는 기선님의 개인적인 일로 인해 2주동안 진행되었다. 학습 주제는 제어문이였고, 추가적인 과제가 6개정도 주어졌는데 2주라는 긴 시간때문인지 마음이 느슨해졌고 필수요소인 학습은 끝냈지만, 추가 과제를 하지 못했다. 단순히 추가과제를 하지 못한 것보다는 스스로가 나태해졌다는 것이 좀 더 충격이었다.

   나태해진 마음도 문제였지만 과제를 해결하려고 할 때 어떻게 해야하는지 모른다는 근본적인 문제점을 알게 되었다. 프로그래머인데 코딩을 못한다는건 큰 문제이다. 학습한 내용만으로도 작성을 할 수 있다고 생각했는데, 막상 코드를 작성하려고하면 어떻게 해야할지 답답한 부분이 많았다. 이러한 부분은 내가 좀 더 찾아보고 공부했다면 충분히 해결할 수 있었던 부분이라고 생각한다.

과제

   이론은 충분히 공부했다고 생각하는데 막상 그것을 활용하여 코드를 작성하는 것이 어렵다. 그래서 과제를 하는데 시간을 많이 투자했지만 하지 못했다.

   기선님이 과제 코드에 대해서 코드 리뷰를 해주셨는데, 코드를 작성할 때 자신이 다시 봤을 때 쭉 읽어서 이해할 수 있으면 되고 남이 읽었을 때도 이해가 잘 된다면 좋은 코드라고 하셨다. 다른 분들이 작성한 것을 보고 따라하는게 아니라 그것을 이해해서 내 것으로 만드는 과정이 필요하다.

테스트 코드

   JUnit을 처음 접해서 테스트 코드도 잘 모르고 어떻게 작성하는지도 잘 모르고 있었다. 인터넷강의를 통해서 학습을 하고있지만 아직 실제로 짜는 법을 잘 모르기 때문에 다른 분들이 작성한 예제를 통해서 감을 익혀야겠다.

추가 질문

Queue에 있는 offer와 add, poll과 remove, peek과 element 간의 차이는 무엇인가?

A. 예외를 던지느냐 안 던지느냐의 차이가 있다.
각각 묶인 요소끼리 하는 역할은 같지만, 예외를 던지는지 안 던지는지의 차이가 있다. 예를 들어 사이즈가 제한되어 있을 때 값이 들어가지 못했을 때 add는 예외를 던지는데 offer는 false가 나온다.

실제 구현을 할 때 일관성(consistance)을 가지고 있는지를 생각해야 한다. add는 예외가 있는데 null이 나오는 poll을 쓴다던가 하면 좋지 못한 것이다.

추가 학습

JUnit5는 왜 public을 생략해도 되는가?

   기본적으로 IDE를 통해 생성된 클래스는 public인데, JUnit5 버전에서는 자바의 reflection을 통해 처리해 default 클래스, default 메소드로도 테스트가 가능하게 업데이트가 되었다.


Reference