본문 바로가기

IT Book Summary

(80)
7-10장 7장 사과와 오렌지 Franc 과 Dollar 비교하기 @Test public void testEquality() { assertTrue(new Dollar(5).equals(new Dollar(5))); assertFalse(new Dollar(5).equals(new Dollar(6))); assertTrue(new Franc(5).equals(new Franc(5))); assertFalse(new Franc(5).equals(new Franc(6))); assertFalse(new Franc(5).equals(new Dollar(5))); } 실패한다. 클래스의 금액과 클래스를 같이 체크해 주자. public boolean equals(Object object) { Money money = (Mo..
4-6장 4장. 프라이버시 Dollar.times() 연산은 호출을 받은 객체의 값 * 인자로 받은 곱수 를 갖는 Dollar를 반환해야 함. public void testMultiplication() { Dollar five = new Dollar(5); Dollar product = five.times(2); assertEquals(10, product.amount); product = five.times(3); assertEquals(15, product.amount); } // 첫번째와 두번째 단언 assertion을 Dollar와 Dollar를 비교하는것으로 재작성 public void testMultiplication() { Dollar five = new Dollar(5); Dollar product..
Part 2 함수형 데이터 처리 - Chapter 4 스트림 소개 대부분의 자바 애플리케이션에서는 컬렉션을 많이 사용한다. 비지니스 로직에 카테고리로 그룹화 한다던지, 가장 비싼 것을 찾는등의 연산이 포함된다. 데이터베이스에서는 선언형으로 SQL 질의 언어에서 우리가 기대하는 것이 무엇인지 직접 표현 가능하다. 컬렉션도 이와 비슷한 기능을 만들 수 있지 않을까? 많은 요소를 포함하는 커다란 컬렉션은 어떻게 처리해야 할까? 스트림이란 무엇인가? 자바 8에 추가된 기능으로, 선언형으로 컬렉션 데이터를 처리할 수 있다. 또한 멀티스레드를 구현하지 않아도 데이터를 병렬로 처리 가능하다. 기존의 자바코드와 비교해보자. List lowCaloricDishes = new ArrayList(); for(Dish dish: menu) { if(dish.getCalories() < 40..
Chapter3 람다 표현식_02 형식 검사, 형식 추론, 제약 람다로 함수형 인터페이스의 인스턴스를 만들 수 있다고했다. 람다 표현식 자체에는 람다가 어떤 함수현 인터페이스를 구현하는지 정보가 없다. 따라서 제대로 람다표현식을 이해하려면 람다의 실제 형식을 파악해야 한다. 형식검사 람다가 사용되는 콘텍스트를 이용해 형식을 추론 가능. 어떤 콘텍스트에서 기대되는 람다 표현식의 형식을 대상 형식 target type 이라고 한다. List heavierThan150g = filter(inventory, (Apple apple) -> apple.getWeight() > 150); filter 메서드의 선언을 확인한다. filter 메서드는 두번째 파라미터로 Pradicate 형식(대상형식)을 기대한다. Pradicate은 test 라는 한 ..
Chapter3 람다 표현식 _ 01 이 챕더에서는 람다 표현식을 어떻게 만드는지 어떻게 사용하는지, 어떻게 코드를 간결하게 만들 수 있는지 설명할 것이다. 또한 자바 8에 추가된 중요한 인터페이스와 형식추론 등의 기능, 위력을 발휘하는 메서드 참조를 설명한다. 내용 자체도 중요하지만 람다표현식은 광범위하게 사용되므로 이 장의 내용을 완벽히 이해해야 한다. 람다란 무엇인가? 람다 표현식은 메서드로 전달할 수 있는 익명함수를 단순화한 것. - 이름은 없지만 파라미터 리스트, 바디, 반환형식, 발생가능한 예외 리스트는 가질 수 있다. 특징 익명 - 보통의 메서드와 달리 이름이 없음 함수 - 특정 클래스에 종속되지 않음 전달 - 람다표현식을 메서드 인수로 전달하거나 변수로 저장 간결성 - 코드 구현의 간결함. 자바8 이전의 할 수 없었던 일을 하..
1-3장 들어가며. 테스트 주도 개발에는 단순한 두가지 규칙만을 따른다 오직 자동화된 테스트가 실패할 경우에만 새로운 코드를 작성한다. 중복을 제거한다. 위의 규칙에 의한 프로그래밍 순서는 다음과 같다. 빨강- 실패하는 작은 테스트를 작성한다. 초록- 어찌되었든지간에 테스트를 통과하게 만든다. 리팩토링- 일단 테스트를 통과하면서 생겨났던 모든 중복을 제거한다. 왜 이런식으로 작업해야할까? 왜 테스트를 위한 추가 작업을 해야만 하는가? -> 불확실함 보다는 일단 구체적으로 시작해보자. -> 새로운 설계 결정을 한번에 하나씩 도입하기 위해. 목표는 작동하는 깔끔한 코드를 만드는 것이다. 1장 다중 통화를 지원하는 Money 객체 앞으로 어떤일을 해야하는지 알려주고 지금하는일에 집중할 수 있도록 도와주며 언제 일이 다..
Chapter 2 동작 파라미터화 코드 전달하기 사용자의 요구사항은 항상 변한다. 따라서 새로 추가하는 기능은 쉽게 구현할 수 있고 유지보수가 쉬워야한다. 동작 파라미터화 behavior parameterization : 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록. 코드블록의 실행은 나중으로 미뤄진다. -> 나중에 실행될 메서드의 인수로 코드블록을 전달할 수 있다. ->코드블록에 따라 메서드의 동작이 파라미터화 된다. 리스트의 모든 요소에 대해서 ''어떤 동작을 수행할 수 있음. 리스트 관련 작업을 끝낸 다음에 '어떤 다른 동작'을 수행할 수 있음. 에러가 발생하면 '정해진 어떤 다른 동작'을 수행할 수 있음. 첫번째 시도 : 녹색사과 필터링 enum Color { RED, GREEN } public static List filterGree..
Part 1 기초 - Chapter 1 자바8, 9, 10, 11 무슨일이 일어나고 있는가? 1996년 JDK1.0 이후 자바는 계속해서 발전해왔고 2018 자바 10,11 이 릴리즈 되었다. 자바 역사를 통틀어 가장 큰 변화가 자바 8 에서 일어났다. 멀티코어 CPU 대중화와 같은 하드웨어적인 변화도 영향을 미쳤을 것이다. 이러한 병렬 실행환경을 쉽게 관리하고 에러가 덜 발생하게 단순하게 접근할 수 있는 방식으로 진화했다. 핵심 키워드는 간결한 코드, 멀티코어 프로세서의 쉬운 활용이라 말할수 있겠다. 자바 언어와, 웹 프레임워크의 진화와 함께 우리는 대부분 최소 자바 8 이상으로 버전을 올렸지만, 이러한 모던 자바의 문법을 적극 활용하며 코딩하지 않았던것 같다. 자바 버전을 11로 올린다고 한들 내가 최신자바 문법을 활용하지 않는다면 무슨 소용인가? 이제 라이브러리를..