Book Review

Book Review/테스트 주도개발 시작하기

[테스트 주도개발 시작하기] Chapter1. TDD 시작(3): 암호 검사기

첫 번째 테스트: 모든 규칙을 충족하는 경우 여기가 중요하다! 첫 번째 테스트를 잘 선택하지 않으면 이후 진행 과정이 순탄하게 흘러가지 않는다. 첫 번째 테스트를 선택할 때에는 가장 쉽거나 가장 예외적인 상황을 선택해야 한다. 암호 검사 기능에서 가장 쉽거나 가장 예외적인 것은 무엇일까? 모든 규칙을 충족하는 경우 모든 조건을 충족하지 않는 경우 모든 조건을 충족하지 않는 테스트: 사실상 구현을 다 하고 테스트를 하는 방식과 다르지 않다. 모든 규칙을 충족하는 경우: 테스트를 쉽게 통과시킬 수 있다. 강함에 해당하는 값을 리턴하면 테스트에 통과할 수 있다. 모든 조건을 충족하는 경우를 먼저 테스트 코드로 작성해보자. @DisplayName("암호가 모든 조건을 충족, 강도는 강함") @Test void ..

Book Review/Modern Java In Action

[모던 자바 인 액션] Chapter3. 람다 표현식

1. 람다란 무엇인가? 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있다. 람다의 특징 익명: 보통의 메서드와 달리 이름이 없으므로 익명이라 표현한다. 구현해야 할 코드에 대한 걱정거리가 줄어든다. 함수: 람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부른다. 전달: 람다 표현식을 메서드 인수로 전달하거나 변수로 저장할 수 있다. 간결성: 익명 클래스처럼 많은 자질구레한 코드를 구현할 필요가 없다. 람다의 구성 // 기존 코드 Comparator byWeight = new Comparator() { @Override public int compare(Apple a1, Apple a2) { return a1.getWeight().compareTo(a2.getWe..

Book Review/테스트 주도개발 시작하기

[테스트 주도개발 시작하기] Chapter1. TDD 시작(2): 암호 검사기

암호 검사기 검사할 규칙은 다음 세 가지이다. 길이가 8글자 이상 0부터 9 사이의 숫자를 포함 대문자 포함 세 규칙을 모두 충족한다. -> 강함 2개의 규칙을 충족한다. -> 보통 1개 이하의 규칙을 충족한다. -> 약함 테스트할 기능의 이름을 정해보자. '약함', '보통', '강함'은 암호 등급이라고 생각할 수 있다. PasswordLevel이라는 단어를 사용하자. 등급 대신에 강도라는 의미를 사용할 수도 있다. 이 경우 PasswordStrength라는 단어를 사용할 수 있다. 암호 등급과 암호 강도 중에서 PasswordStrength를 선택했다. public class PasswordStrengthMeterTest { @DisplayName("테스트 메서드 생성") @Test void name(..

Book Review/Modern Java In Action

[모던 자바 인 액션] Chapter2. 동작 파라미터화 코드 전달하기

동적 파라미터화 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록을 의미한다. 리스트의 모든 요소에 대해서 '어떤 동작'을 수행할 수 있음 리스트 관련 작업을 끝낸 다음에 '어떤 다른 동작'을 수행할 수 있음 에러가 발생하면 '정해진 어떤 다른 동작'을 수행할 수 있음 1. 변화하는 요구사항에 대응하기 기존의 농장 재고목록 애플리케이션에 리스트에 녹색 사과만 필터링하는 기능을 추가한다고 가정하자. 사과 색을 정의하는 Color num이 존재한다고 가정하자. 첫 번째 시도: 녹색 사과 필터링 enum Color { RED, GREEN } public static List filterGreenApples(List inventory) { List result = new ArrayList(); // 사과 누..

Book Review/테스트 주도개발 시작하기

[테스트 주도개발 시작하기] Chapter1. TDD 시작(1)

TDD로 개발할 때 먼저 해야 할 것은 기능을 검증하는 테스트 코드를 작성하는 것이다. 덧셈 기능을 검증하기 위한 테스트 코드를 작성하자. 테스트 코드 작성 import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.*; public class CalculatorTest { @DisplayName("덧셈 기능 테스트") @Test void plus() { int result = CalCulator.plus(1, 2); assertThat(3).isEqualTo(result); } } 이 코드를 작성하면 12행에서 Calculator 클래스가 없다..

Book Review/Modern Java In Action

[모던 자바 인 액션] Chapter1. 자바 8, 9, 10, 11: 무슨 일이 일어나고 있는가?

자바8은 간결한 코드, 멀티코어 프로세서의 쉬운 활용이라는 두 가지 요구사항을 기반으로 한다. 일단 자바 8에서 제공하는 새로운 기술이 어떤 것인지 확인하자. 스트림 API 메서드에 코드를 전달하는 기법 인터페이스의 디폴트 메서드 1. 자바 8의 3가지 프로그래밍 개념 스트림 처리 스트림이란? 한 번에 한 개씩 만들어지는 연속적인 데이터 항목들의 모임이다. 스트림 API의 핵심은 기존에는 한 번에 한 항목을 처리했지만 이제 자바 8에서는 우리가 하려는 작업을 고수준으로 추상화해서 일련의 스트림으로 만들어 처리할 수 있다는 것이다. 또한 입력 부분을 여러 CPU 코어에 쉽게 할당할 수 있다는 부가적인 이득도 얻을 수 있다. 스레드라는 복잡한 작업을 사용하지 않으면서도 공짜로 병렬성을 얻을 수 있다. 동작 ..

초보병일이
'Book Review' 카테고리의 글 목록 (2 Page)