해당 책은 이론부분만 블로그에 적고, 소스적인 부분은 github을 통해 작성하여 url 공유를 하도록 하려고 한다. 2. 스프링 부트에서 테스트 코드를 작성하자 2.1 테스트 코드 소개 TDD와 단위 테스트(Unit Test)는 다른 이야기이다. TDD는 테스트가 주도하는 개발을 이야기한다. 테스트 코드를 먼저 작성하는 것부터 시작한다. 레드 그린 사이클 항상 실패하는 테스트를 먼저 작성하고(Red) 테스트가 통과하는 프로덕션 코드를 작성하고(Green) 테스트가 통과하면 프로덕션 코드를 리팩토링합니다(Refactor). 반면 단위 테스트는 TDD의 첫 번째 단계인 기능 단위의 테스트 코드를 작성하는 것을 이야기합니다. 테스트 코드를 작성함으로써 얻는 이점으로 다음과 같다. 단위 테스트는 개발단계 초기..
21.1 자바 8의 기능 리뷰 자바 8에서 변화가 생긴 이유는 두 가지 추세 때문임을 기억하자 한 가지 추세는 멀티코어 프로세서의 파워를 충분히 활용해야 한다는 것이다. 무어의 법칙에 따라 실리콘 기술이 발전하면서 개발 CPU 코어의 속도가 빨라지고 있다. 즉, 코드를 병렬로 실행해야 더 빠르게 코드를 실행할 수 있다. 데이터 소스를 이용해서 주어진 조건과 일치하는 모든 데이터를 추출하고, 결과에 어떤 연산을 적용하는 등 선언형으로 데이터를 처리하는 방식, 즉 간결하게 데이터 컬렉션을 다루는 추세다. 간결하게 데이터 컬렉션을 처리하려면 불변값을 생산할 수 있는 불변 객체와 불변 컬렉션이 필요하다. 21.1.1 동작 파라미터화(람다와 메서드 참조) 함수형 프로그래밍에서 지원하는 메서드로 코드 블록을 전달하..
20.1 스칼라 소개 20.1.1 Hello beer Hello 2 bottles of beer Hello 3 bottles of beer Hello 4 bottles of beer Hello 5 bottles of beer Hello 6 bottles of beer Object Beer { def main(args: Array[String]) { var n : Int = 2 while(n System.out.println("Hello " + n + " bottles of beer)); } } 스칼라로 다음울 구현할 수 있다. object Beer { def main(args: Array[String]) { 2 to 6 foreach { n => println(s"Hello ${n} bottles of ..
19.1 함수는 모든 곳에 존재한다. 일반값처럼 취급할 수 있는 함수를 일급 함수(first-class function)라고 한다. 연산자로 메서드 참조를 만들거나 람다 표현식으로 직접 함숫값을 표현해서 메서드를 함숫값으로 사용할 수 있다. 19.1.1 고차원 함수 다음중 하나 이상의 동작을 수행하는 함수를 고차원 함수(higher-order functions)라 부른다. 하나 이상의 함수를 인수로 받음 함수를 결과로 반환 19.1.2 커링 대부분의 애플리케이션은 국제화를 지원 해야 하는데 이때 단위 변환 문제가 발생할 수 있다. 보통 변환 요소(conversion factor)와 기준치 조정 요소(baseline abjustment factor)가 단위 변환 결과를 좌우한다. 예를 들어 다음은 섭씨를 ..
18.1 시스템 구현과 유지보수 많은 프로그래머가 유지보수 중 코드 크래시 디버깅 문제를 가장 많이 겪게된다. 코드 크래시는 예상하지 못한 변숫값 때문에 발생할 수 있다. 왜 그리고 어떻게 변숫값이 바뀐 걸까? 유지보수 중 이런 일이 얼마나 자주 일어나는지 생각해보라. 함수형 프로그래밍이 제공하는 부작용 없음(no side effect)과 불변성(immutability)이라는 개념이 이 문제를 해결하는데 도움을 준다. 18.1.1 공유된 가변 데이터 return 문을 통해서만 자신의 결과를 반환하는 메서드를 순수(pure)메서드 또는 부작용 없는(side-effect free)메서드라고 부른다. 부작용이란 자료구조를 고치거나 필드에 값을 할당(setter 메서드 같은 생성자 이외의 초기화 동작) 예외 발..
리액티브 프로그래밍 패러다임의 중요성이 증가하는 3가지 이유 빅데이터 : 보통 빅데이터는 페타바이트 단위로 구성되며 매일 증가한다. 다양한 환경 : 모바일 디바이스에서 수천 개의 멀티 코어 프로세서로 실행되는 클라우드 기반 클러스터에 이르기까지 다양한 환경에 애플리케이션이 배포된다. 사용 패턴 : 사용자는 1년 내내 항상 서비스를 이용할 수 있으며 밀리초 단위의 응답 시간을 기대한다. 17.1 리액티브 매니패스토 리액티브 매니패스토(reactive manifesto) (https://www.reactivemanifesto.org)는 2013년과 2014년에 걸쳐 시스템 개발의 핵심 원칙을 공식적으로 정의한다. 반응성(responsive) : 리액티브 시스템은 빠를 뿐 아니라 더 중요한 특징으로 일정하고 ..