본문 바로가기

전체 글

(79)
Vavr User Guide 공부 Vavr User Guide Vavr Vavr는 함수 제어 구조와 영구적인 데이터 타입을 제공해주는 JAVA 8+를 위한 함수형 라이브러리입니다. Vavr는 함수 패턴을 기반으로 한 람다를 활용하여 다양한 새로운 기능들을 제공해줍니다. 그중 하나는 JAVA 표준 컬렉션 라이브러리를 대체하기 위한 함수 컬렉션 라이브러리입니다. 1. 함수형 프로그래밍 vavr에 대해 알아보기 전에 함수형 프로그래밍의 기초에 대해 알아보면서 왜 자바 컬렉션 라이브러리를 대체할 수 있는 vavr를 만들었는지에 대해 알아보겠습니다. 1) Side-Effects(부수 효과) 자바는 전형적으로 Side-Effects가 많이 존재합니다. 흔히 Side-Effects는 객체나 변수들을 변경시키고 만약 Side-Effects로 인해 의도..
모던 자바 2. 람다 표현식 모던 자바 인 액션 챕터 3. 람다 표현식을 읽으면서 정리한 내용입니다. 람다 표현식 람다 표현식은 저번 게시글에서 본거와 같이 익명 클래스처럼 이름 없는 함수이면서 메서드를 인수로 전달할 수 있습니다. 람다 표현식을 어떻게 만들고, 사용하며 이를 통해 코드를 간결하게 만들 수 있는지에 대해 알아보겠습니다. 1. 람다란? 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 하나의 식으로 표현할 수 있는 것입니다. 람다의 특징에 대해 알아보겠습니다. 람다의 특징 이름이 없으므로 익명입니다. 람다는 특정 클래스에 종속되지 않으므로 메서드가 아닌 함수라고 부릅니다.(함수) 하지만 메서드처럼 파라미터 리스트, 본문, 변환 형식, 가능한 예외 리스트를 포함합니다. 람다 표현식은 메서드 인수로 전달하거나 변수로 저..
Mockito 공부하기 #2 Mockito Docs를 공부하면서 정리한 내용을 작성하는 두 번째 게시글입니다. 첫 번째 게시글 바로가기 11. ArgumentCaptor 보통 verify시 아규먼트 값을 직접 지정하지만 ArgumentCaptor를 사용하면 capture를 통해 유연하게 아규먼트 값을 넘길 수 있습니다. @Test void capture() throws Exception{ // stubbing final List mockedList = mock(List.class); when(mockedList.get(1)).thenReturn("A"); when(mockedList.get(2)).thenReturn("B"); when(mockedList.get(3)).thenReturn("C"); // 1. ArgumentCapt..
Mockito 공부하기 #1 Mockito Docs를 공부하면서 정리한 내용을 작성하는 첫 번째 게시글입니다. 두 번째 게시글 바로가기 Mockito란? Mockito는 Mock Object를 creation, verification, stubbing 해주는 JAVA에서 사용되는 라이브러리입니다. Mock Object 객체 지향 프로그래밍으로 개발한 프로그램을 테스트할 때 테스트를 수행할 모듈과 연결되는 외부의 다른 모듈을 흉내 내는 가짜 모듈을 생성하여 테스트의 효용성을 높이는 데 사용하는 객체입니다. 의존성 추가 plugins { id 'java' } repositories { mavenCentral() } dependencies { testImplementation('org.junit.jupiter:junit-jupiter:5..
모던 자바 1. 동작 파라미터화 코드 전달하기 모던 자바 인 액션 챕터 2. 동작 파라미터화 코드 전달하기를 읽으면서 정리한 내용입니다. 동작 파라미터화 코드 전달하기 동작 파라미터화를 이용하면 자주 바뀌는 요구사항에 효과적으로 대응할 수 있습니다. 동작 파라미터화란 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록을 의미합니다. 1. 변화하는 요구사항에 대응하기 하나의 예제를 통해 코드를 점차 개선하면서 유연한 코드를 만드는 사례를 통해 알아보겠습니다. 어떤 농장 재고 목록에서 녹색 사과만 필터링하는 기능을 추가한다고 가정해보겠습니다. 우선 Color, Apple을 정의하였습니다. enum Color{ GREEN, RED } class Apple { private Color color; private int weight; public int g..
AssertJ 주요 기능 공부 AssertJ 테스트 코드 작성 시 가독성이 뛰어나고 상세한 에러 메시지를 제공해주는 라이브러리입니다. 지원해주는 대표적인 기능들을 테스트해보면서 살펴보겠습니다. 살펴본 기능에 대한 모든 것은 AssertJ Core features highlight를 참조하면서 정리하였습니다. 의존성 추가 // build.gralde plugins { id 'java' } repositories { mavenCentral() } dependencies { testImplementation('org.junit.jupiter:junit-jupiter:5.6.0') testImplementation('org.assertj:assertj-core:3.11.1') compileOnly 'org.projectlombok:lombo..
이펙티브 자바: 아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라 이펙티브 자바 3판에서 객체의 생성과 파괴를 다루는 챕터에서 알려주는 방법 중 아이템 2. 생성자에 매개변수가 많다며 빌더를 고려하라에 대해 알아보겠습니다. 아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라 아이템 1의 정적 팩토리 메서드와 생성자로 객체를 생성할 때는 매개변수가 많을 때 적절한 대응이 어려워집니다. public class Member { private String name; private String email; private String address; private String number; private String hobby; private String job; private int age; // 최소 요구조건 public Member(String name, String e..
이펙티브 자바: 아이템1. 생성자 대신 정적 팩토리 메서드를 고려하라 객체의 생성과 파괴를 다루는 챕터에서 알려주는 방법 중 아이템 1. 생성자 대신 정적 팩토리 메서드를 고려하라에 대해 알아보겠습니다. 아이템 1. 생성자 대신 정적 팩토리 메서드를 고려하라 클래스는 클라이언트에게 public 생성자 대신 static 팩토리 메서드를 제공할 수 있습니다. 여기서 말하는 팩토리 메서드는 디자인 패턴에서 나오는 팩토리 메서드 패턴과 다른 의미입니다. 장점 1) 이름을 가질 수 있다. public class Book { private String name; private Book(String name) { this.name = name; } public static Book createBook(String name){ return new Book(name); } } 위와 같이 ..