분류 전체보기
-
[우아한테크코스-프리코스] 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..
-
@ParameterizedTest☕️ java 2023. 10. 25. 01:19
Test 코드를 작성하는 도중 실패 케이스마다 실패 테스트 메서드를 만들다보니 중복되는 코드도 많아지고 이로 인해 코드의 양이 많아지는 문제가 발생했다. 이런 문제를 해결하기 위해 @ParameterizedTest 를 사용해 해결하고자 알아보게 되었다. 📌 Parameterized Test 💡 Parameterized Test - 다른 인수로 여러번 테스트를 실행하는 것을 가능하게 한다. - @Test 대신 @ParameterizedTest 를 사용한다. - 최소 하나의 source 어노테이션을 붙여주어야 한다. 💡 다양한 Source 종류들 1️⃣ ValueSource @ParameterizedTest @ValueSource(strings = {"beomsic", "beom"}) void valueSo..
-
👀 Unit Test 네이밍 컨벤션☕️ java 2023. 10. 24. 15:31
테스트 코드를 작성하는 도중 테스트 메서드의 네이밍을 어떤식으로 해야 보기 좋고 직관적일지 고민하게 되었다. 자주 사용되는 자바 테스트 네이밍을 찾아서 그 중 하나를 사용하고자 한다. 💡네이밍을 하는 몇 가지 추천 방법 테스트명은 특정한 필요조건을 명시한다. 테스트명에는 기대되는 Input이나 상태, 그에 상응하는 결과값을 포함할 수 있다. 테스트명은 워크플로우와 아웃풋을 명시하는 선언이나 사실들로 나타내야 한다. 테스트명에는 테스트 메서드나 클래스의 이름을 포함할 수 있다. 🧩 네이밍 예시 📕 메서드명_테스트하고자하는상태_예상되는결과 - ex) isAdult_AgeLessthan18_False - 단점: 메서드 이름이 바뀌면 테스트명을 변경해주어야 한다. 📕 메서드명_예상되는결과_테스트하고자하는상태 -..
-
일급 컬렉션☕️ java 2023. 10. 24. 02:56
🧑🏻💻 이동욱님의 글을 보고 공부용으로 정리했습니다. ⭐ 일급 컬렉션 Collection을 Wrapping 하면서, 그 외 다른 멤버 변수가 없는 상태를 일급 컬렉션이라 한다. Map map = new HashMap(); map.put("1", "A"); map.put("2", "B"); map.put("3", "C"); public class GameRanking { private Map ranks; public GameRanking(Map ranks) { this.ranks = ranks; } } 🌟 Wrapping의 이점 비지니스에 종속적인 자료구조 Collection의 불변성 보장 상태와 행위를 한 곳에서 관리 이름이 있는 컬렉션 1️⃣ 비지니스에 종속적인 자료구조 📖 숫자 야구의 2가지 조건 ..
-
🧪 JMH (Java Microbenchmark Harness)☕️ java 2023. 10. 23. 13:49
자바에서 제공하는 Random 함수에 대해 공부하는 과정에서 java.util.Random 과 java.util.concurrent.ThreadLocalRandom 의 성능을 비교해보고자 JMH라는 개념을 도입하고자 공부를 하게 되었다. ⭐ JMH 📍 JMH(Java Microbenchmark Harness)는 openjdk에서 만든 라이브러리이다. - JVM 상에서 실행되는 코드의 성능을 측정하기 위한 벤치마크 도구이다. 📍 성능 측정 코드 실행 시간 메모리 사용량 GC 활동 등등 ⇒ 측정하고 수행하여 실행 결과에 대한 통계를 제공한다. 📖 벤치마크 (Benchmark) 컴퓨터 시스템, 소프트웨어, 하드웨어 등의 성능을 측정하고 비교하기 위해 사용되는 표준화된 기준이나 테스트 🔍 Annotation 1..
-
🆚 Random 함수 비교☕️ java 2023. 10. 23. 12:36
숫자야구 프로그램을 만들면서 Java에서 제공하는 Random 함수들이 어떤 것들이 있는지 궁금하고 어떤 것을 사용해야할지 궁금했다. 1️⃣ java.util.Random 💡 java.util 패키지에 있는 Random 클래스를 사용하는 방법 - 인스턴스를 생성해서 사용 🖥️ 사용 2가지 객체 생성 방법 기본 생성자를 사용하는 방법 long 타입의 시드를 인자로 받는 생성자를 사용하는 방법 // 기본 생성자 Random random = new Random(); // long 타입의 시드를 인자로 받는 생성자 Random random = new Random(10); // 난수 범위 지정 int randomNumber = random.nextInt(max - min) + min; ⚠️ 주의할 점 long 타..