나를 기록하다
article thumbnail
[JUnit - 1] Junit 5란 무엇인가? (어노테이션, 정의, 테스트 클래스와 메서드)
Java 2023. 11. 1. 15:20

우아한테크코스의 프리코스를 진행하며 테스트의 중요성을 계속해서 느끼고 있다. 프리코스를 경험하기 전까지 테스트 코드에 전혀 무지했기에 자바 진영에서 가장 많이 사용되는 Junit, 그리고 그중에서 최신 버전인 Junit5에 대해서 정리하고자 한다. JUnit 5란 무엇인가? 공식 홈페이지를 살펴보면 아래와 같이 설명한다. 해석하자면 아래와 같다. Junit5는 세 가지 하위 프로젝트의 여러 모듈로 구성되어 있다. Junit 5 = Junit Platform + Junit Jupiter + Junit Vintage Junit Platform JVM에서 테스트 프레임워크를 실행하기 위한 기반 역할 플랫폼에서 실행되는 테스트 프레임워크를 개발하기 위한 TestEngine API를 정의 콘솔 런처를 제공하여 플..

article thumbnail
[모던 자바 인 액션] 자바의 변화(8 ~ 11)
Java/모던 자바 인 액션 2023. 10. 31. 19:29

자바 8 등장 전과 후 과거의 코드 Collections.sort(inventory, new Compartor() { public int compare(Apple a1, Apple a2) { return a1.getWeight().compareTo(a2.getWeight()); } }); 자바 8을 이용한 자연어에 더 가까운 코드 inventory.sort(comparing(Apple::getWeight)); 자바 8이 제공하는 새로운 기술들 스트림 API 메서드에 코드를 전달하는 기법 인터페이스의 디폴트 메서드 자바 8은 병렬 연산을 지원하는 스트림이라는 새로운 API를 제공한다. 데이터베이스 질의 언어에서 고수준 언어로 원하는 동작을 표현하면, 구현(자바에서는 스트림 라이브러리가 이 역할을 수행)에서..

article thumbnail
[Effective Java 3/E] 7. 다 쓴 객체 참조를 해제하라
Review/Book 2023. 10. 30. 20:00

가비지 컬렉터가 있더라도 메모리 관리를 해야 한다 [예시] 스택을 간단히 구현한 코드 메모리 누수가 일어나는 위치는 어디인가? public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push(Object e) { ensureCapacity(); elements[size++] = e; } public Object pop() { if (size == 0) { throw new EmptyStackExc..

article thumbnail
[Effective Java 3/E] 6. 불필요한 객체 생성을 피해라
Review/Book 2023. 10. 30. 19:00

불필요한 객체 생성을 파하라 String s = new String("bikini"); 이 문장은 실행될 때마다 String 인스턴스를 새로 만듦 → 반복문이나 자주 호출되는 메서드 안에 있다면 쓸데없는 String 클래스가 수백만 개 만들어질 수도 있다. String s = "bikini"; 이 코드는 하나의 String 인스턴스를 사용한다. 이 방식을 사용한다면 같은 가상 머신 안에서 이와 똑같은 문자열 리터럴을 사용하는 모든 코드가 같은 객체를 재사용함이 보장된다. 생성자 대신 정적 팩토리 메서드(아이템 1)를 제공하는 불변 클래스에서는 정적 팩토리 메서드를 사용해 불필요한 객체 생성을 피할 수 있다. Boolean(String) 생성자 대신 Boolean.valueOf(String) 팩토리 메서드..

article thumbnail
[Effective Java 3/E] 5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라
Review/Book 2023. 10. 30. 18:17

[예시] 정적 유틸리티의 잘못된 사용 public class SpellChecker { private static final Lexicon dictionary = ...; private SpellChecker() {} // 객체 생성 방지 public static boolean isValid(String word) {...} public static List suggestions(String typo) {...} } 비슷하게 싱글턴(아이템 3)으로 구현하는 경우도 흔하다. [예시] 싱글턴의 잘못된 사용 public class SpellChecker { private final Lexicon dictionary = ...; private SpellChecker(...) {} public static Spe..

article thumbnail
[java] private static은 언제 필요할까?(접근 제한자, static 키워드, static 메모리 구조)
Java 2023. 10. 26. 21:00

우아한테크코스 1주차 프리코스 과제인 숫자 야구 게임이 끝나고 코드 리뷰를 하면서 private static 메서드를 발견했다. 접근 제한자부터 static과 메모리 구조까지 기초 개념들을 다시 확실하게 정리하고자 여러 블로그와 자료를 참고하여 정리한다. 참고한 자료들은 하단 참고자료란에 모두 기재해두었다. 접근 제한자 우선 접근 제한자의 종류는 다음과 같다. 접근 제한자 적용 대상 접근 가능 대상 public 클래스 / 필드 / 생성자 / 메서드 모든 대상 protected 필드 / 생성자 / 메서드 같은 패키지 또는 자식 클래스 default 클래스 / 필드 / 생성자 / 메서드 같은 패키지에 소속된 클래스 private 필드 / 생성자 / 메서드 클래스 내부 Static 키워드 사전적 정의 정적인,..

profile on loading

Loading...