전체 글
-
[우아한테크코스 - 프리코스] 늦은 3주차 로또 게임 회고 😓⭐️ 우아한테크코스 2023. 11. 28. 01:19
🔗 나의 Pull Request Link 뒤늦게 올리는 3주차 회고록… 😓 😎 코드리뷰를 통해 성장해보자 프리코스를 함께 참여하고 있는 동료들에게 2주차 미션에 대한 코드리뷰를 주고 받았다. 코드리뷰 과정에서 내가 다른 코드들을 보며 느낀점과 내 코드에 대한 리뷰를 통해 아쉬운 부분과 배운 부분을 이번 미션에서 적용해보고자 했다. 1️⃣ 코드 컨벤션을 잘 지키자. 이전 미션에서 코드 컨벤션을 제대로 확인을 안한 내 자신의 코드를 발견했다..! if(...) print(...); 작은 컨벤션이라도 지킬 수 있도록 꼼꼼하게 내 코드를 작성하고 검토를 할 때에도 더 신경써야겠다. if(...) { print(...); } 2️⃣ 정적 팩토리 메소드를 사용할 때 더 적절히 활용해보자. public static ..
-
[우아한테크코스-프리코스] 2주차 경주게임 회고를 해보자🏁⭐️ 우아한테크코스 2023. 11. 2. 15:54
🔗 나의 Pull Request Link 😎 1주차와 비교 지난 미션에서 공부했던 내용에 대해서 이번 미션에서도 적용을 해보려고 노력을 많이 했다. 1주차때의 경험을 통해 String의 + 기능에 대해서 어떤 방법이 더 효율적인지 비교해보는데 JMH를 사용해보기도 하고 코드를 작성하는데도 더 수월하게 작성할 수 있었던 것 같다. ⚠️ 지난 미션을 진행할 때 아쉬웠던 부분이 테스트 코드 작성과 git commit message 관련 부분이었다. 이번에 이를 보완하고자 테스트 코드를 작성하는데 시간을 더 많이 사용하고 TDD를 적용해보고자 했다. 처음에는 테스트 코드를 작성하고 이 코드가 정상적으로 동작하도록 실제 코드를 구현하고 이를 리팩토링 하는 식으로 구현을 했다. 하지만, 점점 시간이 지나고 처음 테..
-
👻 Mockito☕️ java 2023. 10. 31. 14:20
우아한테크코스 프리코스의 경주 게임미션을 진행하면서 임의로 생성한 값에 의해 자동차가 전진하거나 정지하는 테스트 코드를 작성하는 도중 임의로 생성되는 값을 미리 테스트 코드내에서 지정해주고 이를 통해 기능을 테스트하고 싶었다. 즉, 어떤 메소드를 실행했을 때 해당 메소드가 어떤 리턴 값을 리턴할 지를 정의해놓고 싶었다. 이런 방법을 사용하기 위해서 Mockito를 이용했다. 🔍 Mockito ❓ Mock 💡 Mock - “모의”, “가짜의” 라는 뜻 - 테스트할 때 필요한 실제 객체와 동일한 모의 객체를 만들어 테스트의 효율성을 높이기 위해 사용 📖 위키에 정의된 Mock 모의 객체(Mock Object)란 주로 객체 지향 프로그래밍으로 개발한 프로그램을 테스트할 경우 테스트를 수행할 모듈과 연결되는 외..
-
🔗 Java 문자열와 구분자☕️ java 2023. 10. 30. 15:56
우아한테크코스의 프리코스 자동차 경주 게임 미션에 아래와 같은 요구사항이 있었다. 자동차 경주 게임을 완료한 후 누가 우승했는지를 알려준다. 우승자는 한 명 이상일 수 있다. 우승자가 여러 명일 경우 쉼표(,)를 이용하여 구분한다. 이렇게 문자열을 연결해야하는 요구사항에 대해 해결하고자 여러 방법을 찾아보았다. 🧩 StringBuilder ⚠️ String + 연산의 문제 자바에서 String은 불변이라 문자열에 대해 수정을 할 수 없다. String str1 = "abc"; String str2 = "def"; String resulta = str1 + str2; // abcdef 위와 같은 코드가 있을 때, 자바에서는 str1의 길이 + str2의 길이를 가지는 새로운 String을 만들어 낸다. 따..
-
Multiple Assertions☕️ java 2023. 10. 29. 12:47
우테코 프리코스 - 자동차 경주 게임 미션을 진행하면서 하나의 테스트 함수에서 기능에 대해 여러 결과를 검증하기 위해서 assertThat() 을 여러 번 이용해 검증을 했다. 하지만, 이 방법을 사용하다 보니 각 검증 코드가 실패한다면 다음 검증을 수행하지 않고 테스트 함수가 바로 중단되었다. 🆚 assertThat 과 assertAll assertThat을 여러개 사용해서 여러 결과를 검증하는 방법을 사용했을 때는 하나의 검증 코드가 실패하면 그 다음 검증들은 수행되지 않았기에 여러 검증 코드들을 assertAll 으로 grouping 하여 모든 검증을 수행하고 나온 결과를 한번에 볼 수 있도록 했다. assertThat을 이용한 테스트 코드 @Test void assertThatTest() { //..
-
[우아한테크코스-프리코스] 1주차 숫자야구 회고를 해보자 ⚾️⭐️ 우아한테크코스 2023. 10. 26. 14:15
우아한테크코스 - 프리코스에 참여하고 첫 주의 미션으로 ‘숫자야구’를 구현했어야 했다. 🔗 나의 Pull Request Link ⚾ 숫자야구 🎯 요구사항 [x] 1 ~ 9 사이의 서로 다른 수로 이루어진 3자리 수를 맞추기 [x] 같은 수가 같은 자리인 경우 스트라이크, 다른 자리인 경우 볼 [x] 컴퓨터가 1 ~ 9 까지의 서로 다른 임의의 수 3개를 선택 [x] 게임 플레이어는 서로 다른 3개의 숫자를 입력하고 컴퓨터는 입력한 숫자에 대한 결과 출력 🤔 고민 1️⃣ 숫자야구에 필요한 상수들을 어떻게 관리할까? 숫자야구에서 필요한 상수들이 여러개 있었다. 몇 자리 수인지 게임 재시작 입력 값 게임 종료 입력 값 처음 생각한 것은 static final 변수로 선언해 사용하는 곳에서 사용하도록 했다. p..
-
☕️ Java 17☕️ java 2023. 10. 25. 03:48
우아한테크코스 6기 프리코스에 참여하게 되어 요구사항인 Java 17 을 이용하게 되었다. 기존에는 Java 11을 주로 사용했던 나로써 이번 기회에 Java 17에 대해 더 알아보고 사용하고자 정리해보려고 한다 🔥 ☕ Java 17 💡 Java 17 Version - 2021년 9월 새로 공개한 LTS(Long-Term Support) 버전 ⭐ Java 17의 기능 Java 11과 비교했을 때 Java 17에서 사용할 수 있는 몇 가지 기능들에 대해 살펴보자. Text Block Record Sealed Classes Switch Expression Stream.toList() 1️⃣ Text Block JDK 15부터 정식 지원하는 기능 3개의 큰 따옴표를 통해 Java 문자열을 보다 가독성있게 작성..
-
🆚 AssertJ과 JUnit 의 Assertions 비교☕️ java 2023. 10. 25. 01:43
📌 Assertions 비교 (AssertJ vs JUnit) 이번에 테스트 코드를 작성하는 과정에서 Assertions를 사용하고 싶은데 위 두 가지의 차이점과 어떤 것을 선택해야 하는지 궁금했다. 🧩 AssertJ 테스트에 관련된 많은 기능을 제공하고 메서드 체이닝으로 가독성 높은 테스트 코드 작성을 지원하는 오픈 라이브러리 배우기 쉽다. 사용하기 쉽다 fluent 코드를 더 읽시 쉽다 자동완성을 지원한다. 🧑🏻💻 예시 📍 org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Assertions; public class JUnitTest { @Test public void testEqual() { int number1 = 1; int numb..