안녕하세요 ☺️
몰입을 즐기는 개발자, 박우빈입니다.
(현) 캐치테이블(와드) 소프트웨어 엔지니어
(전) 우아한형제들 소프트웨어 엔지니어
우아한테크코스 3기, 4기 리뷰어 / 우아한테크캠프pro 1기 리뷰어 / 그 외 다양한 리뷰어 활동
강의
로드맵
전체 1수강평
- Readable Code: 읽기 좋은 코드를 작성하는 사고법
- Readable Code: 읽기 좋은 코드를 작성하는 사고법
- Readable Code: 읽기 좋은 코드를 작성하는 사고법
- Readable Code: 읽기 좋은 코드를 작성하는 사고법
- Readable Code: 읽기 좋은 코드를 작성하는 사고법
게시글
질문&답변
MarketPlace에서 Sonarlint 검색이 안됩니다.
안녕하세요, 하다현 님!아래 InUng 님이 잘 말씀해주셨는데, SonarQube for IDE를 사용하시면 될 것 같아요.이 부분은 강의 설명란에도 기재해 놓겠습니다.감사합니다!
- 0
- 3
- 46
질문&답변
isLandMineCell() 메서드 질문
안녕하세요, 하다현 님!아마 뒷부분 강의를 계속 진행하시다보면 객체를 책임에 따라 나누고 응집하는 과정에서 자연스럽게 리팩토링이 될 거예요. 최종 완성된 코드를 보고도 의문이 드는 부분이 있다면 추가로 질문 남겨주세요.감사합니다 🙂
- 0
- 1
- 85
질문&답변
Cell[][]BOARD 매개변수받기
안녕하세요, 정예은 님!정확히 어느 부분이 이해가 가지 않으시는지 제가 글로만 보아서는 잘 모르겠지만, 다음과 같은 흐름입니다.Minesweeper에서 선언하고 생성한 Cell[][] 타입의 BOARD 인스턴스를 consoleOutputHandler.showBoard()에 파라미터로 넘겨줍니다.showBoard()에서는 받은 Cell[][] 타입의 인스턴스를 가지고 게임판을 콘솔에 그리는 역할을 수행합니다. Cell 이중배열을 row, column 개념에 맞게 순차적으로 순회하면서, board가 가지고 있는 Cell을 참조하여 cell.getSign()을 통해 Cell이 가진 문양을 콘솔에 표시합니다.게임판을 상세하게 그리는 과정이 직관적으로 이해가 잘 가지 않으신다면, IDE의 디버그 모드를 활용하여 각 라인마다 어떤 과정이 수행되고, 콘솔에 어떻게 표시하는지를 하나씩 살펴보셔도 좋을 것 같네요.도움이 되셨기를 바랍니다.감사합니다 🙂
- 0
- 2
- 59
질문&답변
ConsoleInputHandler에서 왜 final붙여야 하는지
안녕하세요, 정예은 님!해당 강의의 최종 코드 버전인 ConsoleInputHandler는 18번째 줄이 존재하지 않아 제가 어떤 부분인지 확인할 수가 없는데, 강의 분/초를 명시해주시면 제가 확인하기가 더 용이할 것 같아요.
- 0
- 1
- 81
질문&답변
정적 생성자 메서드 of, from
안녕하세요, 박철현 님!저도 너무 세세하게 구분을 하지는 않고, 상황에 맞게 자연스럽게 읽히는 단어를 선택합니다.of()를 가장 많이 사용하고, 생성한다는 뉘앙스를 더 주고 싶으면 create() 등을 사용하고 있어요.감사합니다 🙂
- 0
- 2
- 42
질문&답변
Getter관해서
안녕하세요, 아아 님!보통 객체에서 데이터를 꺼내어 사용할 때 getter를 사용하죠.데이터를 꺼내야 하는 대표적인 경우 중 하나는, 데이터를 명시적으로 출력하는 경우입니다.예를 들어 콘솔에 데이터를 출력하거나, API 응답의 최종 단에서 데이터를 클라이언트에 반환하는 경우가 있겠습니다.또는 상황에 따라 A 객체에서 B 객체에서 데이터를 넘겨주어야 할 경우도 있을 수 있겠네요.요지는, 객체를 만들자마자 getter를 열어서 아무 곳에서나 데이터를 꺼내지 말자, 입니다. 객체가 데이터를 캡슐화하고, 적절한 가공의 책임을 가져 객체의 역할을 온전히 다 해낼 수 있도록요.도움이 되셨기를 바랍니다.감사합니다. 🙂
- 0
- 3
- 47
질문&답변
이름 바꾸기
안녕하세요, 정예빵 님!음, 글쎄요. for문 내의 i는 반복을 위해 0부터 순차적으로 증가하는 값이기 때문에, 잘 생각해보면 지뢰라는 의미와는 거리가 멉니다. (지뢰가 0부터 증가하는 것은 아니니까요.) 오히려 10이라는 숫자가 지뢰 개수 라는 의미에 더 부합하죠.도움이 되셨기를 바랍니다.감사합니다 🙂
- 0
- 2
- 49
질문&답변
stack 대신 queue 를 사용해 bfs 로 변경해도 되나요??
안녕하세요, ewgregerg c 님!네, 그럼요. 저는 설명의 편의를 위해 DFS를 선택했고요. 탐색 과정에 문제만 없다면 어떤 방법을 사용해도 괜찮습니다.감사합니다. 🙂
- 0
- 2
- 74
질문&답변
단위 테스트에 대한 질문 fake, h2
안녕하세요, yacheku 님! 1. 단위테스트할때 fake Repo를 커스텀하는 노력만 조금 들인다면 단위 테스트에대한 속도도 더빨라질거라 생각하는데 어떻게 생각하시나요?어떤 형태의 단위 테스트인지, 커스텀을 어떻게 하실지는 모르겠지만, 잘 작성된 단위 테스트는 이미 속도가 충분히 빠른 테스트 방식입니다 ㅎㅎ 더 빠르게 한다고 해서 크게 (체감할 정도로) 효용성이 있을 것 같지는 않아요 🙂 2. fake repo를 만들때 list, map, set 중에 저는 map을선택하였는데 혹시 어떤것을 사용하시는지?저는 FakeRepository 자체가 관리 포인트가 된다고 생각하기 때문에 애초에 선호하는 방법은 아닙니다만, 사용한다면 탐색 비용을 고려하여 map을 사용할 것 같네요. 3. 테스트 패키지 구조를 통합, 단위 라는 패키지를따로만들어서 넣는것보다alt + insert로 만들기 쉽게 같은공간에 단위,통합이 존재하게하면서 Test, IT 라는 네이밍으로 클래스를만들고있는데 ex) OrderServiceTest, OrderServiceIT 우빈님은 어떻게 통합과 단위 패키지구조를 설계하시는지 궁금합니다.단위와 통합인지에 따라 패키지를 구분하지는 않습니다. 패키지 구조 관점에서는 어떻게 테스트할 것인지 보다 무엇을 테스트하는지가 더 중요하기 때문에, 테스트 대상인 클래스 기준으로 자연스럽게 패키지를 잡고(프로덕션 코드의 패키지 구조를 그대로 따라가도록), 필요하다면 테스트 클래스 이름만 차이를 줄 것 같아요.도움이 되셨기를 바랍니다.감사합니다. 🙂
- 0
- 2
- 39
질문&답변
동시성 테스트와 데이터 초기화
안녕하세요, 조희제 님!말씀 주신 상황을 제가 글로만 보다보니 100% 이해하기는 어렵지만, 이미 문제와 원인 파악을 잘 해주신 것 같아요. BeforeEach로 접근하신 방법도 나쁘지는 않습니다만, 확인하신대로 멀티 스레드 테스팅 환경에서는 해당 테스트에 영향을 줄 수 있는 테스트 어노테이션을 제거하고 접근하는 것이 더 좋아 보입니다.감사합니다 🙂
- 0
- 2
- 96