테스트하기 어려운 코드, 전략 패턴을 사용하는 것이 늘 좋은 것일까?
·
우아한테크코스 6기/6기
우테코에 들어가자마자 첫번째로 구현하게 된 미션은 자동차 미션이었다. 프리코스 때에도 이미 한번 풀어보았던 미션이었다. https://nakhonest.tistory.com/entry/%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%95%98%EA%B8%B0-%EC%96%B4%EB%A0%A4%EC%9A%B4-%EC%BD%94%EB%93%9C-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%B4%EC%95%BC%ED%95%98%EC%A7%80%EB%9E%9C%EB%8D%A4%EC%97%90-%EB%8C%80%ED%95%9C-%ED%85%8C%EC%8A%A4%ED%8A%B8 테스트 하기 어려운 코드! 어떻게 해야하지?(랜덤에 대한 테스트) 프리코스 2주차 미션부터는 각 기능에 대한 테..
우테코 최종합격 회고(+ 2023 하반기 회고)
·
우아한테크코스 6기/프리코스
너무 감사하게도 우테코에 최종 합격하게 되었다!! 여름 방학때부터 진심을 다해 준비해 왔고, 프리코스 기간동안 정말 깊게 몰입했던 만큼 합격을 하게 된 것이 너무나도 기쁘다 ㅠㅠ 정말 간절했던 만큼 본 과정에서 또 어떠한 성장이 있을지 너무나도 기대가 된다. 우테코 지원 계기 지난 회고 소프트 복수전공에 대한 지난 3학기 회고 첫 회고개발자가 되기 위해 공부를 시작한지 1년 반이나 지났는데 이제서야 첫 회고를 진행해 본다. 1년 반 동안 적은 글이 달랑 하나라니,, 앞으로는 삶을 돌아보는 시간도 더 가지고, 블로그에 nakhonest.tistory.com 나는 회고 글의 내용처럼 개발자가 되고 싶어 소프트웨어학부를 복수 전공하고 있는 대학생이다. 지난 2년 동안에는 들을 학점이 많다보니 학교 공부에만 매..
Java enum 활용기(enum에서의 다형성)
·
Java
이 글은 enum의 기본적인 문법에 대해서는 다루지 않습니다! 해당 내용은 인터넷이나 책에 너무나도 잘 소개되어 있기 때문에, 만약 enum에 대해 잘 모르신다면 한번 보고 오셔도 좋을 것 같습니다 :) 우테코 프리코스 중 로또 미션을 진행하면서 다음과 같은 요구 사항을 만날 수 있었다. 먼저 해당 요구 사항을 보고, 로또 당첨 결과를 enum으로 만들면 좋을 것 같다고 생각하였다. (실제로도 코드 리뷰를 하다보면 많은 분들이 이와 같이 구현하셨다.) 관련된 데이터들과 로직을 하나의 상수로 묶을 수 있기 때문에 많은 분들이 enum을 활용 하셨을 것이라 생각한다. 따라서 나도 다음과 같이 enum으로 로또 당첨 결과를 관리하였다. public enum WinningResult { FIRST(6, fals..
테스트 하기 어려운 코드! 어떻게 해야하지?(랜덤에 대한 테스트)
·
Software Engineering
프리코스 2주차 미션부터는 각 기능에 대한 테스트 코드를 작성해야 했다. 이에 따라 JUnit5와 AssertJ를 학습하고, TDD를 적용해보려 노력했다. 사실 이 라이브러리를 학습하고, 테스트 코드를 작성하는 것만해도 그리 쉬운일이 아니었다. 그래도 다른 분들의 야구게임 코드를 리뷰하면서 잘 작성하신 테스트 코드를 많이 보았기 때문에, 테스트 코드를 작성하는 방법 자체는 빠르게 학습할 수 있었다. (목객체 만들어서 테스트 코드도 작성하시던데 이건 아직 어떻게 하는건지 잘 모르겠다 ㅠㅠ) 하지만 정말정말 어려웠던 부분은 테스트 라이브러리 자체가 아니라, 랜덤에 대한 테스트였다. 자동차가 움직일지 결정하기 위해서는 랜덤으로 숫자를 선택해야 하는데, 이 랜덤 숫자에 대한 단위 테스트가 어려웠기 때문이다. 여..
값 객체(VO), 뭔지 알고 쓰자! 그리고 쓰는 이유는??
·
OOP
값 객체(Value Object, VO)에 대해서는 객체지향 생활 체조 원칙 3번인 "모든 원시값과 문자열을 포장(wrap)한다." 내용에서 처음 알게 되었다. 처음에는 객체지향 생활 체조 원칙을 지키기 위해 정확한 개념과, 왜 쓰는지 모른채 원시값을 값 객체로 포장하려고 했었다. 하지만 그러다보니 엔티티와 값객체의 차이도 뭔지 몰랐고, 여러모로 공부가 필요하다고 느껴 추가적으로 공부했다. 먼저 도메인 주도 설계 철저 입문 책에서는 값 객체를 다음과 같이 설명한다. 값 객체는 시스템 특유의 값에 대한 표현이며, 값의 한 종류다. -17p- 값 객체가 아닌 원시 타입으로 처리했을때(feat. 우테코 프리코스 1주차) 예를들어 숫자 야구 게임에서 사용하는 숫자를 단순히 int 변수로 처리한다고 해보자. 그런..
객체지향의 사실과 오해 리뷰
·
책리뷰
객체지향의 사실과 오해(조영호) 를 읽은지는 좀 되었지만, 계속해서 책 리뷰를 미루다가 이제서야 쓴다 ^_^ 읽게 된 계기 사실 이 책은 예전 객체지향 프로그래밍 스터디에 참여했을때 함께 읽으면 좋을 것 같다고 스터디장이 추천해 주신 책이었다. 하지만 첫 주차에만 스터디가 진행되고 그 이후에는 사람들이 많이 나가서 스터디는 바로 종료가 되었다 ㅋㅎ.. 그렇게 이 책의 존재를 잊다가 우아한테크코스에 들어가고 싶어 준비하던 중에 많은 사람들이 이 책을 추천해주어서 읽게 되었다. 사실 다들 내용이 반복이 많고 앨리스 예제가 있어서 읽는건 금방 읽을거라 했지만,,, 나는 책을 읽는데 생각보다 많은 시간을 소요했다. 뭔가 내용을 읽었지만 내용 중 반정도 밖에 머리에 들어온 느낌이라 여러번 반복하면서 읽었기 떄문이..
테스트 코드 그게 뭔데? 중요한거야?(feat. TDD)
·
Software Engineering
1학기에 소프트웨어 공학 수업을 들으며 테스트 코드를 짜는게 중요하다는 말은 많이 들어보았다. 하지만 실제로 개발을 하면서 테스트 코드를 짜본적이 한번도 없다. 이 글을 통해 테스트 코드 작성의 중요성을 이해하고, 작성에 대한 동기를 얻어보자!! 먼저는 장점에 대해 조금더 자세하게 살펴보기 전에 아주 살짝 TDD(Test-Driven Development)가 무엇인지 알아보자. TDD가 뭔지 처음 들어본다면 이것이 무엇인지 알아 본 뒤에 이 글을 읽어보는 걸 추천한다! 이 글의 내용이 결국 TDD의 장점에 대한 내용이기 때문이다. TDD는 테스팅과 코드 개발을 혼합시키는(interleaved) 개발 접근법이다. 즉 개발을 하면서 테스팅이 동시에 일어나는 접근법을 말한다. 이때 중요한 점은 테스트 코드가 ..
왜 객체지향을 써야하는 것일까?(feat. 앨런 케이)
·
OOP
처음에 객체지향이라는 것을 배웠을 때에는 객체가 무엇인지, 클래스가 무엇인지, 캡슐화, 상속, 다형성 이러한 개념에 대해서만 배웠던것 같다. 학교에서 "객체지향 프로그래밍"이라는 수업도 들었는데, 사실 아직까지도 이 객체지향이라는 개념이 잘 와닿지 않는것 같다. 아마 나 말고도 많은 사람들이 이 개념이 중요하다는 것은 알지만 아직까지 잘 이해가 가지 않는 사람이 많을 것이다. 하지만 지금은 먼저 이 복잡하고 거대한 객체지향이라는 산에 오르기 전에 왜 이 객체지향을 사용하고, 또 우리가 왜 배워야 하는지 살펴보자. 객체지향 프로그래밍이라는 것이 어떤 배경에서 생겨났고, 현재 이 객체지향 프로그래밍을 왜 사용하는지를 알게 된다면 앞으로 객체지향 이라는 개념을 이해하고, 또 사용하는데 큰 도움이 될 것이다. ..