이미 소장하고 있다면 판매해 보세요.
|
1장. C#으로 함수형 스타일 맛보기
__함수형 프로그래밍 소개 ____정의, 스크립트, 세션 이해하기 ____대체와 단순화를 이용한 해석 ____함수형 프로그래밍의 함수 이해하기 __함수형 vs 명령형 접근 방식 __C# 컴파일러 준비 __함수형 프로그래밍의 개념 ____퍼스트 클래스 함수와 고차 함수 ____순수 함수 ____재귀 함수 __C#과 함수형 프로그래밍 ____수학적 개념을 이용한 함수형 프로그래밍 이해 ____함수형 C#에 튜플 적용하기 ____C#의 커링 ____파이프라인 ____메서드 체인 __명령형 코드를 함수형 코드로 바꾸기 ____명령형 코드 접근 방식 ____함수형 코드 접근 방식 ____함수형 프로그래밍의 장점과 단점 __요약 2장. 대리자 살펴보기 __대리자 소개 ____간단한 대리자 ____멀티캐스트 대리자 __내장 대리자 ____제네릭 대리자 ____Action과 Func __대리자의 가변성 구별 ____공변성 ____반공변성 __요약 3장. 람다식을 이용한 무명 메서드 표현 __무명 메서드란 ____무명 메서드 만들기 ____무명 메서드를 인수로 사용하기 ____무명 메서드 작성 가이드 ____무명 메서드의 장점 __람다식 ____무명 메서드를 람다식으로 변환하기 ____람다식으로 대리자 형식 만들기 ____식 트리와 람다식 __람다식을 이용한 이벤트 구독 ____event 키워드 ____EventHandler와 EventHandler __함수형 프로그래밍에서 람다식의 강점 ____퍼스트 클래스 함수 ____클로저 __요약 4장. 확장 메서드로 객체 기능 확장하기 __확장 메서드와 친해지기 ____확장 메서드 만들기 ____인텔리센스 연계 __다른 어셈블리의 확장 메서드 호출 ____네임스페이스 참조 ____기존 네임스페이스 이용 ____인터페이스, 컬렉션, object 활용하기 ____인터페이스 확장 ____컬렉션 확장 ____object 확장 __함수형 프로그래밍에서 확장 메서드가 가지는 장점 __확장 메서드의 한계 ____정적 클래스 확장 ____기존 클래스나 형식의 메서드 구현 수정하기 __요약 5장. LINQ를 이용해 컬렉션 조회하기 __LINQ란 무엇인가 __LINQ의 실행 지연 __플루언트 구문과 질의 식 비교 ____LINQ 플루언트 구문 ____LINQ 질의 식 __표준 질의 연산자 ____필터링 ____투영 ____조인 ____정렬 ____그룹화 ____집합 연산 ____변환 메서드 ____요소 연산 __요약 6장. 비동기 프로그래밍으로 함수형 프로그래밍의 반응성 개선하기 __반응형 응용 프로그램 개발 ____동기식 프로그램 실행 ____스레드 사용하기 ____스레드 풀을 이용한 스레드 생성 __비동기 프로그래밍 모델 패턴 ____동기식 Read( ) 메서드 ____BeginRead( )와 EndRead( ) ____LINQ를 이용한 BeginRead( ) 메서드 호출 __태스크 기반 비동기 패턴 ____Task와 Task ____간단한 TAP 모델 적용하기 ____WhenAll( ) 확장 메서드 ____TAP 모델로 APM 감싸기 __async, await 키워드를 이용한 비동기 프로그래밍 __함수형 프로그래밍의 비동기 함수 __요약 7장. 재귀 호출 __재귀 호출에 대해 ____재귀 호출의 동작 방식 ____반복을 재귀 호출로 리팩토링하기 __꼬리 재귀 ____누적기 전달형 ____연속 전달형 ____직접 재귀와 간접 재귀 __LINQ Aggregate를 이용한 함수형 재귀 호출 ____Aggregate 메서드 __요약 8장. 지연과 캐시 기법을 이용한 코드 최적화 __지연이란 ____지연 열거 ____지연 평가 ____엄격하지 않은 평가 ____지연 초기화 ____지연의 장단점 __값비싼 자원 캐시하기 ____사전 연산 ____메모화 __요약 9장. 패턴 이용하기 __함수형 프로그래밍의 패턴 매칭 ____패턴 매칭을 이용한 데이터 변환 ____패턴 매칭을 위한 분기 ____패턴 매칭 간소화 ____C# 7의 패턴 매칭 __모나드 설계 패턴 소개 ____모나드 M ____모나드에 제네릭 데이터 형식 구현하기 ____Lazy ____모나드 패턴 규칙 __요약 10장. C#으로 함수형 프로그래밍하기 __함수형 윈도우 폼 개발 ____폼 이면의 코드 작성 ____명령형 접근 방식의 계산 엔진 구현 __요약 11장. 코딩 모범 사례와 함수형 코드 테스팅 __함수형 C#으로 살펴보는 코딩 모범 사례 ____모호한 시그니처 방지 ____변경 가능한 클래스를 변경 불가능하게 리팩토링하기 ____변경 가능성 및 일시적인 결합의 방지 ____부작용에 대한 대응책 __도메인 논리와 가변 셸로 코드 분리하기 ____부작용이 있는 코드 확인 ____AddRecord( ) 메서드 리팩토링 ____RemoveRecord( ) 메서드 리팩토링 ____단위 테스트에서 도메인 논리 실행하기 ____코드에 가변 셸 추가하기 __요약 |
Wisnu Anggoro
위스누 앤거로의 다른 상품
|
★ 이 책에서 다루는 내용 ★
- 함수형 접근 방식에 따른 응용 프로그램 개발 - 함수형으로 작성한 코드의 단위 테스팅 - 함수형 프로그래밍 기반의 효율적인 코드 생성 - LINQ 질의를 이용한 데이터 처리 - 응용 프로그램 응답성 개선을 위한 비동기 프로그래밍 활용 - 함수형 코드에서 재귀를 이용한 코드 단순화 - 프로그램 코드 최적화를 위한 지연과 캐시 기법 ★ 이 책의 대상 독자 ★ 이 책은 C#의 기본적인 사항들에 대해 어느 정도 이해하고 있는 개발자들에게 적합하며, 함수형 프로그래밍에 대한 사전 지식은 필요하지 않다. ★ 이 책의 구성 ★ 1장, ‘C#으로 함수형 스타일 맛보기’에서는 함수형 프로그래밍의 개념, 명령형 프로그래밍과 비교를 통해 함수형 프로그래밍 접근법을 소개한다. 간단한 명령형 코드를 함수형으로 리팩토링해본다. 2장, ‘대리자 살펴보기’에서는 대리자 정의, 문법, 사용법을 알아본다. 다양한 대리자 변형과 내장 대리자에 대해서도 살펴본다. 3장, ‘람다식을 이용한 무명 메서드 표현’에서는 대리자 개념과 대리자를 이용해서 무명 메서드를 만들고 사용하는 방법을 알아본다. 무명 메서드에 대해 충분히 이해한 다음에는 이를 람다식으로 변환하고 함수형 프로그래밍에 적용해본다. 4장, ‘확장 메서드로 객체 기능 확장하기’에서는 함수형 프로그래밍에서 확장 메서드가 갖는 장점을 자세하게 살펴본다. 확장 메서드의 사용 방법, 인텔리센스에서 새로운 메서드를 가져오는 방법, 다른 어셈블리에서 확장 메서드를 호출하는 방법 등도 알아본다. 5장, ‘LINQ를 이용해 컬렉션 조회하기’에서는 C#의 LINQ 연산자를 소개하고 LINQ 문법의 두 가지, 일반 프로그래밍 방식과 쿼리식 문법을 비교한다. 덧붙여 LINQ 프로세스에서 지연 실행이 무엇인지 살펴본다. 6장, ‘비동기 프로그래밍으로 함수형 프로그래밍의 반응성 개선하기’에서는 함수형 접근 방식에서 비동기 프로그래밍을 설명한다. 비동기 프로그래밍 모델(APM)과 태스크 기반 비동기 패턴(TAP)에 대해 알아본다. 7장, ‘재귀 호출’에서는 순환문과 비교해 재귀 호출이 갖는 장점을 기술하고, 직접 및 간접 재귀 호출에 대해 설명한다. 8장, ‘지연과 캐시 기법을 이용한 코드 최적화’에서는 함수형 프로그래밍 관점의 최적화라는 관점으로 지연과 캐시 기법에 대해 이야기한다. 9장, ‘패턴 이용하기’에서는 전통적인 스위치 케이스(switch-case) 작업에 비해 패턴을 이용할 때 얻을 수 있는 장점에 대해 살펴본다. 패턴 매칭과 모나드에 대해 논하면서 C# 7에서 새로 도입한 패턴 매칭 기능을 사용한다. 10장, ‘C#으로 함수형 프로그래밍하기’에서는 주어진 명령형 코드를 기반으로 함수형 코드를 개발하는 방법을 보여준다. 이전 장에서 배운 지식을 근간으로 함수형 접근법에 따라 애플리케이션을 만들어본다. 11장, ‘코딩 모범 사례와 함수형 코드 테스팅’에서는 함수형 접근 방법의 우수 사례를 설명하면서 숨김 없는 시그니처를 만들고 부작용에 대응하는 방법을 알아본다. 또한 코드를 도메인 논리와 변경 가능한 셸 내로 격리하고 단위 테스트를 수행한다. ★ 지은이의 말 ★ 객체지향 프로그래밍 기법을 이용한 개발에 익숙한 개발자 중 일부는 함수형 프로그래밍에 전혀 관심이 없을 수도 있다. 하지만 함수형 프로그래밍의 강점이 있다는 점은 분명하다. 그중 하나는 함수형 프로그래밍에서 함수가 수학 함수와 동일하다는 사실에 기반해서 코드에 대한 새로운 시각을 가질 수 있다는 것이다. 함수형 프로그래밍의 함수는 불필요한 부작용이 없으며, 따라서 함수를 호출하더라도 클래스 내의 다른 함수에 어떠한 영향도 미치지 않는다. 이 외에도 함수형 프로그래밍이 갖는 많은 장점과 특징을 책을 통해 자세히 살펴볼 수 있다. ★ 옮긴이의 말 ★ C# 개발자 가운데 함수형 프로그래밍이라는 표현이 익숙한 이도 있겠지만 아직은 생소한 사람들이 더 많을 거라 생각한다. 나 또한 처음 접하는 프로그래밍 방식이었기에 새로운 개념을 소개하는 부분에서 생각보다 많은 시간을 할애해야 했다. 이 과정에서 그동안 많이 접해 오고, 현재도 현업에서 대다수 개발자들이 쓰고 있는 프로그래밍 방식과 함수형 프로그래밍을 비교해보는 즐거운 경험도 누릴 수 있었다. 함수형 프로그래밍을 적재적소에 이용하면 기존 코딩 방식에 비해 효율적이고 안전한 코드를 작성할 수 있겠지만, 사실 사용해야 할 의무는 없다. 디자인 패턴과 리팩토링을 몰라도 신나게 개발했던 그 옛날을 떠올려 보면 쉽게 공감이 갈 것이다. 다만 함수형 프로그래밍은 개발자라면 누구나 마음속에 품고 있을 슈퍼 개발자가 되는 즐거운 상상을 실제로 이루기 위해 가져볼 만한 특별한 아이템으로써 충분한 매력을 가졌다고 생각한다. 모든 책이 그러하듯 이 책도 함수형 프로그래밍의 완벽한 가이드일 수는 없다. 다만, 함수형 프로그래밍이 무엇인지 이해하고, 실제로 개발에 어떻게 적용할 수 있을지에 대한 개념을 잡기에는 충분하리라 생각한다. 이 책에서 다루지 않거나 부족한 내용은 책에서 배운 지식을 기반으로 인터넷의 다양한 매체를 이용해 쉽게 채울 수 있을 것이다. 저자가 전하고자 하는 바를 그대로 옮기기 위해 최선을 다했지만, 부족한 부분이 있다면 역자의 노력과 능력이 부족한 탓이니 너그러운 시각으로 봐주길 바란다. 잘못된 부분은 동료 독자들을 위해 가감 없이 지적해주길 바란다. |