본문 바로가기

추천 검색어

실시간 인기 검색어

프랙티컬 C#

위키북스 프로그래밍 & 프랙티스 시리즈 16
위키북스

2022년 11월 15일 출간

종이책 : 2018년 01월 10일 출간

(개의 리뷰)
( 0% 의 구매자)
eBook 상품 정보
파일 정보 pdf (5.09MB)
ISBN 9791158393830
지원기기 교보eBook App, PC e서재, 리더기, 웹뷰어
교보eBook App 듣기(TTS) 가능
TTS 란?
텍스트를 음성으로 읽어주는 기술입니다.
  • 전자책의 편집 상태에 따라 본문의 흐름과 다르게 텍스트를​ 읽을 수 있습니다.
  • 전자책 화면에 표기된 주석 등을 모두 읽어 줍니다.
  • 이미지 형태로 제작된 전자책 (예 : ZIP 파일)은 TTS 기능을 지원하지 않습니다.
  • '교보 ebook' 앱을 최신 버전으로 설치해야 이용 가능합니다. (Android v3. 0.26, iOS v3.0.09,PC v1.2 버전 이상)

PDF 필기 Android 가능 (iOS예정)
소득공제
소장
정가 : 20,000원

쿠폰적용가 18,000

10% 할인 | 5%P 적립

이 상품은 배송되지 않는 디지털 상품이며,
교보eBook앱이나 웹뷰어에서 바로 이용가능합니다.

카드&결제 혜택

  • 5만원 이상 구매 시 추가 2,000P
  • 3만원 이상 구매 시, 등급별 2~4% 추가 최대 416P
  • 리뷰 작성 시, e교환권 추가 최대 300원

작품소개

이 상품이 속한 분야

대부분의 초보 프로그래머들은 ’C#의 기본적인 문법은 어느 정도 이해했지만 지금 알고 있는 문법을 어떻게 적용하고 프로그램을 어떻게 만들어야 할지 잘 모르겠다.’라는 고민을 가지고 있을 것입니다. 이 책은 C#을 이제 정석으로 공부하려고 하는 독자를 위한 책입니다.

C#의 문법을 이해한 것만으로는 프로그램을 작성할 수 없습니다. 지금 해결하려고 하는 문제의 순서를 생각하고 여기에 이용할 데이터의 구조를 생각한 후에 이를 C# 코드로 작성하는 기술이 필요합니다. .NET 프레임워크에 마련돼 있는 다양한 클래스를 활용하는 방법도 알아둬야 하고 C# 코드를 나중에 변경하기 쉽게 작성하기 위한 지식도 필요합니다.

이런 기술을 습득하는 지름길은 현장에서 이용되는 ‘관용구’, ‘정석’, ‘패턴’을 학습하는 것입니다. 이 패턴을 잘 기억하는 것이 고수가 되는 지름길인 것입니다. 이 책에서는 이해하기 어려웠던 객체지향에 관한 내용을 다시 확인하는 과정에서 출발합니다. 그리고 현장에서 사용되는 ‘관용구/정석’을 중심으로 해서 C#에 포함된 편리한 기능을 사용하는 방법, 데이터를 다루는 방법, 프레임워크를 이용하는 방법을 알기 쉽게 풀어서 설명함으로써 독자가 C# 프로그래밍에 익숙해질 수 있게 합니다. 또한 이 책에서 알게 된 문법을 어떻게 적용할지, 어떻게 프로그래밍할지, 왜 프로그램을 그렇게 작성해야 하는지에 관해서도 자세히 설명합니다.
[01부] 준비 편

▣ 01장: 객체지향 프로그래밍 기초
1.1 클래스
___1.1.1 클래스를 정의한다
___1.1.2 클래스의 인스턴스를 생성한다
___1.1.3 객체를 이용한다
___1.1.4 인스턴스는 여러 개 만들 수 있다
1.2 구조체
1.3 값형과 참조형
___1.3.1 값형에 대해서
___1.3.2 참조형에 대해서
___1.3.3 왜 값형과 참조형이라는 두 가지 형이 필요할까?
1.4 정적 멤버와 정적 클래스
___1.4.1 정적 속성과 정적 메서드
___1.4.2 정적 클래스
1.5 네임스페이스
1.6 상속
___1.6.1 상속이란?
___1.6.2 is a 관계

▣ 02장: C#으로 프로그램을 만들어보자
2.1 거리를 환산하는 프로그램
___2.1.1 첫 버전
___2.1.2 계산 로직을 메서드의 형태로 독립시킨다
___2.1.3 프로그램에 기능을 추가한다
___2.1.4 메서드의 기능을 단순하게 한다
___2.1.5 클래스로 분리한다
___2.1.6 클래스를 이용한다
___2.1.7 정적 메서드로 수정한다
___2.1.8 정적 클래스로 수정한다
___2.1.9 상수를 정의한다
___2.1.10 완성된 소스코드
2.2 매출을 계산하는 프로그램
___2.2.1 Sale 클래스를 정의한다
___2.2.2 CSV 파일을 읽어 들인다
___2.2.3 점포별 매출을 구한다
___2.2.4 집계된 결과를 출력한다
___2.2.5 초판이 완성됐다
___2.2.6 메서드를 이동시킨다
___2.2.7 새 생성자를 추가한다
___2.2.8 클래스를 인터페이스로 바꾼다
___2.2.9 var라는 암시형을 활용한다
___2.2.10 완성된 소스코드

▣ 03장: 람다식과 LINQ 기초
3.1 람다식 이전
___3.1.1 메서드를 인수로 넘겨준다
___3.1.2 델리게이트를 사용한다
___3.1.3 익명 메서드를 이용한다
3.2 람다식
___3.2.1 람다식이란?
___3.2.2 람다식을 사용한 예
3.3 List 클래스와 람다식의 조합
___3.3.1 Exists 메서드
___3.3.2 Find 메서드
___3.3.3 FindIndex 메서드
___3.3.4 FindAll 메서드
___3.3.5 RemoveAll 메서드
___3.3.6 ForEach 메서드
___3.3.7 ConvertAll 메서드
3.4 LINQ to Objects의 기초
___3.4.1 LINQ to Objects의 간단한 예
___3.4.2 쿼리 연산자
___3.4.3 시퀀스
___3.4.4 지연 실행

[02부] 기초 편

▣ 04장: 기본 관용구
4.1 초기화와 관련된 관용구
___4.1.1 변수의 초기화
___4.1.2 배열과 리스트 초기화
___4.1.3 Dictionary 초기화
___4.1.4 객체 초기화
4.2 판정과 분기에 관한 관용구
___4.2.1 단순한 비교
___4.2.2 수치가 어떤 범위에 있는지를 조사한다
___4.2.3 else-if를 통한 다분기 처리
___4.2.4 체로 걸러 남은 것만을 처리한다
___4.2.5 bool 값을 판단한다
___4.2.6 bool 값을 반환한다
4.3 반복에 관한 관용구
___4.3.1 지정한 횟수만큼 반복한다
___4.3.2 컬렉션에 있는 요소를 모두 꺼낸다
___4.3.3 List에 있는 모든 요소를 처리한다
___4.3.4 적어도 한 번은 반복하는 것
___4.3.5 루프 도중에 처리를 중단한다
4.4 조건 연산자, null 합체 연산자를 사용한 관용구
___4.4.1 조건에 따라 대입할 값을 변경한다
___4.4.2 null 합체 연산자
___4.4.3 null 조건 연산자
4.5 속성에 관한 관용구
___4.5.1 속성 초기화에 관련된 관용구
___4.5.2 읽기 전용 속성
___4.5.3 참조형인 읽기 전용 속성
4.6 메서드에 관한 관용구
___4.6.1 가변 인수
___4.6.2 오버로드는 하지 않고 옵션 인수를 사용한다
4.7 그 밖의 관용구
___4.7.1 1을 더할 때는 증감 연산자 ++를 사용한다
___4.7.2 파일 경로에는 축자 문자열 리터럴을 이용한다
___4.7.3 두 개의 요소를 바꾼다
___4.7.4 문자열을 숫자값으로 변환한다
___4.7.5 참조형을 형변환한다
___4.7.6 예외를 다시 던진다
___4.7.7 using을 사용해 리소스를 정리한다
___4.7.8 여러 개의 생성자를 정의한다

▣ 05장: 문자열을 처리한다
5.1 문자열을 비교한다
___5.1.1 문자열끼리 비교한다
___5.1.2 대/소문자 구분 없이 비교한다
___5.1.3 히라가나/카타카나 구분 없이 비교한다
___5.1.4 전각/반각 구별없이 비교한다
5.2 문자열을 판정한다
___5.2.1 null 또는 빈 문자열을 판정한다
___5.2.2 지정한 부분 문자열로 시작되는지 조사한다
___5.2.3 지정한 부분 문자열이 포함돼 있는지 조사한다
___5.2.4 지정한 문자열이 포함돼 있는지 조사한다
___5.2.5 조건을 만족하는 문자가 포함돼 있는지 조사한다
___5.2.6 모든 문자가 조건을 만족하는지 조사한다
5.3 문자열을 검색하고 추출한다
___5.3.1 부분 문자열을 검색하고 그 위치를 구한다
___5.3.2 문자열의 일부를 추출한다
5.4 문자열을 변환한다
___5.4.1 문자열의 앞뒤에 있는 공백을 제거한다
___5.4.2 지정한 위치부터 임의 개수의 문자를 삭제한다
___5.4.3 문자열에 다른 문자열을 삽입한다
___5.4.4 문자열의 일부를 다른 문자열로 치환한다
___5.4.5 소문자를 대문자로 변환한다/대문자를 소문자로 변환한다
5.5 문자열을 연결하고 분할한다
___5.5.1 두 개의 문자열을 연결한다
___5.5.2 문자열 끝에 다른 문자열을 추가한다
___5.5.3 지정한 구분 문자로 문자열 배열을 연결한다
___5.5.4 지정한 문자로 문자열을 분할한다
___5.5.5 StringBuilder를 사용해 문자열을 연결한다
5.6 그 밖의 문자열 처리
___5.6.1 문자열에서 문자를 하나씩 꺼낸다
___5.6.2 문자 배열로 문자열을 생성한다
___5.6.3 숫자값을 문자열로 변환한다
___5.6.4 지정한 서식으로 문자열을 형성한다

▣ 06장: 배열과 List를 처리한다
6.1 이번 장에서 공통으로 사용하는 코드
6.2 요소를 설정한다
___6.2.1 배열 또는 List를 동일한 값으로 채운다
___6.2.2 배열 또는 List에 연속된 값을 설정한다
6.3 컬렉션을 집계한다
___6.3.1 평균값을 구한다
___6.3.2 최솟값과 최댓값을 구한다
___6.3.3 조건에 일치하는 요소를 센다
6.4 컬렉션을 판정한다
___6.4.1 조건에 일치하는 요소가 존재하는지 조사한다
___6.4.2 모든 요소가 조건을 만족하는지 조사한다
___6.4.3 두 컬렉션이 같은지 조사한다
6.5 단일 요소를 구한다
___6.5.1 조건에 일치하는 첫/마지막 요소를 구한다.
___6.5.2 조건에 일치하는 첫/마지막 인덱스를 구한다
6.6 여러 개의 요소를 구한다
___6.6.1 조건을 만족하는 n개의 요소를 구한다
___6.6.2 조건을 만족하는 동안에만 요소를 구한다
___6.6.3 조건을을 만족하는 동안에는 요소를 건너뛴다
6.7 그 밖의 처리(변환, 정렬, 연결 등)
___6.7.1 컬렉션으로부터 다른 컬렉션을 생성한다
___6.7.2 중복을 제거한다
___6.7.3 컬렉션을 나열한다
___6.7.4 두 개의 컬렉션을 연결한다

▣ 07장: 딕셔너리 다루기
7.1 Dictionary의 기본적인 조작
___7.1.1 딕셔너리 초기화
___7.1.2 사용자 정의형 객체를 값으로 저장한다
___7.1.3 딕셔너리에 요소를 추가한다
___7.1.4 딕셔너리에서 요소를 꺼낸다
___7.1.5 딕셔너리에서 요소를 삭제한다
___7.1.6 딕셔너리에 있는 모든 요소를 꺼낸다
___7.1.7 딕셔너리에 있는 모든 키를 꺼낸다
7.2 딕셔너리 응용
___7.2.1 딕셔너리로 변환한다
___7.2.2 딕셔너리로부터 다른 딕셔너리를 생성한다
___7.2.3 사용자 지정 클래스를 키로 이용한다
___7.2.4 키만을 저장한다
___7.2.5 키가 중복되는 것을 허용한다
7.3 딕셔너리를 이용한 예제 프로그램
___7.3.1 Abbreviations 클래스
___7.3.2 Abbreviations를 이용한다

▣ 08장: 날짜와 시간 처리
8.1 DateTime 구조체
___8.1.1 DateTime 객체를 생성한다
___8.1.2 DateTime에 포함된 속성
___8.1.3 지정한 날짜의 요일을 구한다
___8.1.4 윤년을 판정한다
___8.1.5 날짜 형식의 문자열을 DateTime 객체로 변환한다
8.2 날짜의 포맷
___8.2.1 날짜를 문자열로 변환한다
___8.2.2 날짜를 일본식으로 표시한다
___8.2.3 지정한 날짜의 연호를 구한다
___8.2.4 지정한 날짜에 해당하는 요일의 문자열을 구한다
8.3 DateTime을 비교한다
___8.3.1 날짜와 시간을 비교한다
___8.3.2 날짜만 비교한다
8.4 날짜를 계산한다(기초)
___8.4.1 지정한 시분초 이후의 시각을 구한다
___8.4.2 n일 후와 n일 전의 날짜를 구한다
___8.4.3 n년 후와 n개월 후를 구한다
___8.4.4 두 시각의 차를 구한다
___8.4.5 두 날짜의 차이를 구한다
___8.4.6 해당 월의 말일을 구한다
___8.4.7 1월 1일부터의 날짜 수를 구한다
8.5 날짜를 계산한다(응용)
___8.5.1 다음 특정 요일을 구한다
___8.5.2 나이를 구한다
___8.5.3 지정한 날이 몇 주째에 있는지를 구한다
___8.5.4 지정한 달의 n번째의 X요일의 날짜를 구한다

[03부] 실전 편

▣ 09장: 파일 처리
9.1 텍스트 파일로 입력한다
___9.1.1 텍스트 파일을 한 행씩 읽어 들인다
___9.1.2 텍스트 파일을 한꺼번에 읽어 들인다
___9.1.3 텍스트 파일을 IEnumerable으로 취급한다
9.2 텍스트 파일에 출력한다
___9.2.1 텍스트 파일에 한 행씩 문자열을 출력한다
___9.2.2 기존 텍스트 파일 끝에 행을 추가한다
___9.2.3 문자열 배열을 한번에 파일에 출력한다
___9.2.4 기존 텍스트 파일의 첫머리에 행을 삽입한다
9.3 파일 처리
___9.3.1 파일이 존재하는지 여부를 조사한다
___9.3.2 파일을 삭제한다
___9.3.3 파일을 복사한다
___9.3.4 파일을 이동시킨다
___9.3.5 파일 이름을 수정한다
___9.3.6 파일을 수정한 시간과 만든 시간을 구하고 설정한다
___9.3.7 파일의 크기를 구한다
___9.3.8 File과 FileInfo 중 어느 쪽을 사용해야 할까?
9.4 디렉터리 처리
___9.4.1 디렉터리가 존재하는지 여부를 조사한다
___9.4.2 디렉터리를 생성한다
___9.4.3 디렉터리를 삭제한다
___9.4.4 디렉터리를 이동시킨다
___9.4.5 디렉터리 이름을 수정한다
___9.4.6 지정한 폴더에 있는 디렉터리의 목록을 구한다
___9.4.7 지정한 폴더에 있는 디렉터리의 목록을 열거한다
___9.4.8 지정한 폴더에 있는 파일의 목록을 한번에 구한다
___9.4.9 지정한 폴더에 있는 파일의 목록을 열거한다
___9.4.10 디렉터리와 파일 목록을 함께 구한다
___9.4.11 디렉터리와 파일이 변경된 시각을 수정한다
9.5 경로 이름을 처리한다
___9.5.1 경로 이름을 구성 요소로 분할한다
___9.5.2 상대 경로로부터 절대 경로를 구한다
___9.5.3 경로를 구성한다
9.6 그 밖의 파일 처리
___9.6.1 임시 파일을 생성한다
___9.6.2 특수 폴더의 경로를 구한다

▣ 10장: 정규 표현식을 활용한 고급 문자열 처리
10.1 정규 표현식이란?
10.2 문자열을 판정한다
___10.2.1 지정한 패턴에 일치하는 부분 문자열이 있는지 여부를 판정한다
___10.2.2 지정한 패턴의 문자열이 시작되는지 여부를 판정한다
___10.2.3 지정한 패턴으로 문자열이 끝나는지 여부를 판정한다
___10.2.4 지정한 패턴에 완전히 일치하는지 여부를 판정한다
10.3 문자열 검색
___10.3.1 처음에 나오는 부분 문자열을 찾는다
___10.3.2 일치하는 문자열을 모두 찾는다
___10.3.3 Matches 메서드의 결과에 LINQ를 적용한다
___10.3.4 일치한 부분 문자열의 일부만을 꺼낸다
10.4 문자열을 치환하고 분할한다
___10.4.1 Regex.Replace 메서드를 사용해 쉽게 치환한다
___10.4.2 그룹화 기능을 이용한 치환
___10.4.3 Regex.Split 메서드를 이용해 분할한다
10.5 더욱 수준 높은 정규 표현식
___10.5.1 수량자
___10.5.2 최장 일치와 최단 일치
___10.5.3 역참조 구문

▣ 11장: XML 파일 처리
11.1 예제 XML 파일
11.2 XML 파일 입력
___11.2.1 특정 요소를 구한다
___11.2.2 특정 요소를 형변환해서 구한다
___11.2.3 속성을 구한다
___11.2.4 조건을 지정해 XML 요소를 구한다
___11.2.5 XML 요소를 정렬한다
___11.2.6 중첩된 자식 요소를 구한다
___11.2.7 자손 요소를 구한다
___11.2.8 익명 클래스의 객체 형태로 요소를 구한다
___11.2.9 사용자 지정 클래스의 객체 형태로 요소를 구한다
11.3 XML 객체를 생성한다
___11.3.1 문자열로부터 XDocument를 생성한다
___11.3.2 문자열로부터 XElement을 생성한다
___11.3.3 함수 생성 기능으로 XDocument 객체를 조합한다
___11.3.4 컬렉션으로부터 XDocument를 생성한다
11.4 XML을 편집하고 저장한다
___11.4.1 요소를 추가한다
___11.4.2 요소를 삭제한다
___11.4.3 요소를 치환한다
___11.4.4 XML 파일에 저장한다
11.5 XML에서 쌍 정보를 다룬다
___11.5.1 쌍 정보 목록을 XML로 변환한다
___11.5.2 쌍 정보를 속성의 형태로 저장한다
___11.5.3 쌍 정보를 읽어 들인다
___11.5.4 Dictionary 객체를 XML로 변환한다
___11.5.5 XML 파일로부터 Dictionary 객체를 생성한다

▣ 12장: 직렬화와 역직렬화
12.1 객체를 XML 데이터로 저장하고 복원한다
___12.1.1 객체의 내용을 XML 형식으로 저장한다
___12.1.2 직렬화한 XML 데이터를 복원한다
___12.1.3 컬렉션 객체를 직렬화/역직렬화한다
12.2 응용 프로그램 간에 XML 데이터를 주고받는다
___12.2.1 XmlSerializer를 사용해 직렬화한다
___12.2.2 XmlSerializer를 사용해 역직렬화한다
___12.2.3 XmlIgnore 속성으로 직렬화의 대상에서 제외한다
___12.2.4 속성으로 요소 이름(태그 이름)을 기본값에서 수정한다
___12.2.5 XmlSerializer를 사용해 컬렉션을 직렬화한다
___12.2.6 XmlSerializer를 사용해 컬렉션을 역직렬화한다
12.3 JSON 데이터를 직렬화하고 역직렬화한다
___12.3.1 JSON 데이터로 직렬화한다
___12.3.2 JSON 데이터를 역직렬화한다
___12.3.3 Dictionary를 JSON 데이터로 직렬화한다
___12.3.4 JSON 데이터를 Dictionary로 역직렬화한다

▣ 13장: 엔터티 프레임워크로 데이터에 접근한다
13.1 엔터티 프레임워크에 있는 Code First를 이용한다
13.2 프로젝트를 생성한다
___13.2.1 새 프로젝트를 생성한다
___13.2.2 NuGet으로 엔터티 프레임워크를 설치한다
13.3 엔터티 클래스(모델)를 작성한다
13.4 DbContext 클래스를 생성한다
___13.4.1 BooksDbContext 클래스를 생성한다
___13.4.2 데이터베이스 접속 문자열을 확인한다
13.5 데이터를 추가한다
___13.5.1 데이터를 추가한다
___13.5.2 작성된 DB를 확인한다
13.6 데이터를 읽는다
13.7 또 데이터를 추가한다
___13.7.1 Authors만 추가한다
___13.7.2 이미 등록된 Author를 사용해 서적을 추가한다
13.8 데이터를 수정한다
13.9 데이터를 삭제한다
13.10 수준 높은 쿼리
13.11 관련 엔터티를 한꺼번에 읽어 들인다
13.12 데이터 주석과 자동 마이그레이션
___13.12.1 데이터 주석
___13.12.2 자동 마이그레이션

▣ 14장: 그 밖의 프로그래밍의 정석
14.1 프로세스를 시작한다
___14.1.1 프로그램을 시작한다
___14.1.2 프로세스가 끝나기를 기다린다
___14.1.3 ProcessStartInfo 클래스를 사용해 섬세하게 제어한다
14.2 버전 정보를 구한다
___14.2.1 어셈블리 버전을 구한다
___14.2.2 파일의 버전을 구한다
___14.2.3 UWP 패키지 버전(제품 버전)을 구한다
14.3 응용 프로그램의 구성 파일을 구한다
___14.3.1 appSettings 정보를 구한다
___14.3.2 응용 프로그램 설정 정보를 열거한다
___14.3.3 독자적인 형식의 응용 프로그램 설정 정보를 구한다
14.4 Http 통신
___14.4.1 DownloadString 메서드로 웹 페이지를 가져온다
___14.4.2 DownloadFile 메서드로 파일을 내려받는다
___14.4.3 DownloadFileAsync 메서드로 비동기 처리한다
___14.4.4 OpenRead 메서드로 웹 페이지를 가져온다
___14.4.5 RSS 파일을 가져온다
___14.4.6 매개변수를 주고 정보를 얻는다
14.5 ZIP 아카이브 파일을 처리한다
___14.5.1 아카이브에 있는 모든 파일을 추출한다
___14.5.2 아카이브에 저장돼 있는 파일의 목록을 구한다
___14.5.3 아카이브에서 임의의 파일을 추출한다
___14.5.4 지정한 디렉터리 안에 있는 파일을 아카이브로 만든다
14.6 협정 세계시와 시간대
___14.6.1 현지 시각과 그에 대응되는 UTC를 구한다
___14.6.2 문자열을 DateTimeOffset으로 변환한다
___14.6.3 지정한 지역의 시간대를 구한다
___14.6.4 시간대 목록을 구한다
___14.6.5 지정한 지역의 현재 시각을 구한다
___14.6.6 한국 시간을 다른 지역의 시간으로 변환한다
___14.6.7 A 지역의 시각을 B 지역의 시각으로 변환한다

[04부] 고급 편

▣ 15장: LINQ 사용
15.1 이번 장에서 이용할 서적 데이터
15.2 입력 소스가 한 개인 경우에 LINQ를 이용하는 법
___15.2.1 어떤 조건 안에서 최댓값을 구한다
___15.2.2 최솟값인 요소를 한 개만 구한다
___15.2.3 평균값 이상인 요소를 모두 구한다
___15.2.4 중복을 제거한다
___15.2.5 여러 개의 키로 나열한다
___15.2.6 여러 요소 가운데 어느 하나에 해당하는 객체를 구한다
___15.2.7 GroupBy 메서드로 그룹화한다
___15.2.8 ToLookup 메서드로 그룹화한다
15.3 입력 소스가 여러 개 있을 때 LINQ를 사용하는 법
___15.3.1 두 개의 시퀀스를 결합한다
___15.3.2 두 개의 시퀀스를 그룹화해서 결합한다

▣ 16장: 비동기/병렬 프로그래밍
16.1 비동기 처리와 병렬 처리의 필요성
16.2 async/await 이전의 비동기 프로그래밍
___16.2.1 스레드를 이용한 비동기 처리
___16.2.2 BackgroundWorker 클래스를 사용한 비동기 처리
___16.2.3 Task 클래스를 이용한 비동기 처리
16.3 async/await를 이용한 비동기 프로그래밍
___16.3.1 이벤트 핸들러를 비동기로 만든다
___16.3.2 비동기 메서드를 정의한다
16.4 HttpClient를 이용한 비동기 처리(async/await 응용 예)
___16.4.1 HttpClient를 사용한 간단한 예
___16.4.2 HttpClient를 응용한다
16.5 UWP에서의 비동기 IO 처리
___16.5.1 파일 피커를 사용해 파일에 접근한다
___16.5.2 로컬 폴더에 텍스트 파일을 출력한다
___16.5.3 로컬 폴더에 있는 텍스트 파일을 읽어 들인다
___16.5.4 앱을 설치한 폴더에서 파일을 읽어 들인다
16.6 병렬 처리 프로그래밍
___16.6.1 PLINQ로 병렬 처리한다
___16.6.2 Task 클래스를 이용한 병렬 처리
___16.6.3 HttpClient를 병렬 처리한다

▣ 17장: 실전 객체지향 프로그래밍
17.1 다형성 기초
___17.1.1 상속을 사용해 다형성을 구현한다
___17.1.2 인터페이스를 사용해 다형성을 구현한다
17.2 템플릿 메서드 패턴
___17.2.1 라이브러리와 프레임워크
___17.2.2 텍스트 파일을 처리하는 프레임워크
___17.2.3 텍스트 파일을 처리하는 프레임워크를 구현한다
___17.2.4 프레임워크를 이용한다(응용 프로그램 작성)
___17.2.5 프로그램을 실행한다
17.3 전략 패턴
___17.3.1 거리 환산 프로그램을 다시 생각해본다
___17.3.2 Converter에 공통되는 메서드와 속성을 정의한다
___17.3.3 Converter의 구상 클래스를 정의한다
___17.3.4 거리를 단위 변환하는 클래스를 정의한다
___17.3.5 객체 생성을 한 곳에서 관리한다
___17.3.6 프로그램을 완성한다

▣ 18장: 스타일, 네이밍, 주석
18.1 스타일에 관한 지침
___18.1.1 구조를 들여쓰기에 반영한다
___18.1.2 괄호를 사용해 정리한다
___18.1.3 공백을 일관성 있게 유지한다
___18.1.4 한 행에 모든 것을 넣지 않는다
18.2 네이밍에 관한 지침
___18.2.1 파스칼 표기법과 낙타 표기법을 적절히 사용한다
___18.2.2 그것이 나타내는 것을 설명하는 이름을 지정한다
___18.2.3 정확한 철자를 사용한다
___18.2.4 로컬 변수의 생략형은 오해가 없는 범위 안에서 이용한다
___18.2.5 로컬 변수이면서 한 문자 변수는 용도를 정한다
___18.2.6 변수 이름/속성 이름은 명사가 좋다
___18.2.7 bool 형이라는 것을 알게 해주는 이름을 지정한다
___18.2.8 메서드 이름에는 동사를 지정한다
___18.2.9 바람직하지 않은 이름
18.3 주석에 관한 지침
___18.3.1 당연히 알고 있는 것은 주석에 쓰지 않는다
___18.3.2 클래스나 메서드에 쓰는 주석은 개요를 쓴다
___18.3.3 코드를 읽어 알 수 없는 정보를 주석에 쓴다
___18.3.4 잘못된 코드에 주석을 쓰기보다는 코드를 수정한다
___18.3.5 주석은 필요한 최소한으로 제한한다
___18.3.6 주석 처리한 코드를 방치하지 않는다
___18.3.7 겉모습을 중시한 주석은 쓰지 않는다

▣ 19장: 좋은 코드를 작성하기 위한 지침
19.1 변수에 관한 지침
___19.1.1 변수의 스코프는 좁게 정한다
___19.1.2 매직 넘버를 사용하지 않는다
___19.1.3 한 변수를 계속 쓰면 안 된다
___19.1.4 한 변수에 여러 개의 값을 넣으면 안 된다
___19.1.5 변수 선언은 최대한 늦춘다
___19.1.6 변수의 개수는 적을수록 좋다
19.2 메서드에 관한 지침
___19.2.1 중첩은 얕아야 한다
___19.2.2 return 문을 한 개로 정리하려고 애쓰면 안 된다
___19.2.3 실행 결과의 상태를 int 형으로 반환하면 안 된다
___19.2.4 메서드는 단일 기능으로 구현한다
___19.2.5 메서드를 짧게 구현한다
___19.2.6 만능 메서드를 만들지 않는다
___19.2.7 메서드 인수의 개수는 적을수록 좋다
___19.2.8 인수에 ref 키워드를 붙인 메서드는 정의하지 않는다
___19.2.9 인수에 out 키워드를 붙인 메서드는 최대한 정의하지 않는다
19.3 클래스에 관한 지침
___19.3.1 필드는 비공개로 지정한다
___19.3.2 쓰기 전용 속성은 정의하지 않는다
___19.3.3 연속해서 참조할 때마다 다른 값을 반환하는 속성을 정의하면 안 된다
___19.3.4 비용이 드는 처리는 속성이 아닌 메서드로 정의한다
___19.3.5 객체가 저장하고 있는 다른 객체를 외부에 노출시키면 안 된다
___19.3.6 기저 클래스에 유틸리티 메서드를 포함시키면 안 된다
___19.3.7 속성을 인수 대신 사용하면 안 된다
___19.3.8 거대한 클래스를 작성하지 않는다
___19.3.9 new 수식자를 사용해 상속하는 부모 쪽 메서드를 대체하면 안 된다
19.4 예외 처리에 관한 지침
___19.4.1 예외를 대충 해결하면 안 된다
___19.4.2 예외를 throw할 때 InnerException을 삭제해서는 안 된다
19.5 그 밖의 바람직하지 않은 프로그래밍
___19.5.1 const를 오용한다
___19.5.2 중복된 코드
___19.5.3 복사/붙여넣기 프로그래밍
___19.5.4 Obsolete 속성이 붙은 클래스와 메서드를 계속 사용한다
___19.5.5 필요없는 코드를 그대로 남겨둔다

작가정보

저자 이데이 히데유키 (出井 秀行)는 일본 토치기현 출생. 동경이과대학 이공학부 정보과학과 졸업. FORTRAN, Pascal, BASIC, COBOL, C, C++, Delphi 등 많은 언어를 사용해오다가 2002년에 C#을 접하고 그 훌륭함에 매료된 후 현재까지 C#을 주로 사용하고 있다. 2004년부터 gushwell이라는 핸들명으로 온라인 활동을 시작했다. 메일 매거진이나 블로그를 통해 C# 기술에 관한 정보를 알리고 있다. 2005년부터 12년 연속으로 마이크로소프트 MVP 어워드를 수상했다. 취미는 독서, 사진, 농구이다.

역자 김범준은 일본 호세이대학 경영학부를 졸업했다. 대학 시절 취미로 프로그래밍을 시작한 것을 계기로 이 업계에 발을 들여놓게 됐으며, 한국과 일본에서 임베디드 시스템과 게임 관련 회사에서 개발 프로젝트를 진행했다. 번역서로는 《정석으로 배우는 딥러닝》 《러닝스쿨! 파이썬 교과서》 《유니티 UI 디자인 교과서》 《머신러닝 이론 입문》 《모던 C 언어 프로그래밍》 《따라 하면서 배우는 유니티 3D 입문》이 있으며, 저서로는 《만들면서 배우는 OS커널의 구조와 원리》 《뇌를 자극하는 하드웨어 입문》이 있다.

이 상품의 총서

Klover리뷰 (0)

Klover리뷰 안내
Klover(Kyobo-lover)는 교보를 애용해 주시는 고객님들이 남겨주신 평점과 감상을 바탕으로, 다양한 정보를 전달하는 교보문고의 리뷰 서비스입니다.
1. 리워드 안내
구매 후 90일 이내에 평점 작성 시 e교환권 100원을 적립해 드립니다.
  • - e교환권은 적립일로부터 180일 동안 사용 가능합니다.
  • - 리워드는 1,000원 이상 eBook, 오디오북, 동영상에 한해 다운로드 완료 후 리뷰 작성 시 익일 제공됩니다.
  • - 리워드는 한 상품에 최초 1회만 제공됩니다.
  • - sam 이용권 구매 상품 / 선물받은 eBook은 리워드 대상에서 제외됩니다.
2. 운영 원칙 안내
Klover리뷰를 통한 리뷰를 작성해 주셔서 감사합니다. 자유로운 의사 표현의 공간인 만큼 타인에 대한 배려를 부탁합니다. 일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
  • 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
  • 도서와 무관한 내용의 리뷰
  • 인신공격이나 욕설, 비속어, 혐오 발언이 개재된 리뷰
  • 의성어나 의태어 등 내용의 의미가 없는 리뷰

구매 후 리뷰 작성 시, e교환권 100원 적립

문장수집

문장수집 안내
문장수집은 고객님들이 직접 선정한 책의 좋은 문장을 보여 주는 교보문고의 새로운 서비스 입니다. 교보eBook 앱에서 도서 열람 후 문장 하이라이트 하시면 직접 타이핑 하실 필요 없이 보다 편하게 남길 수 있습니다. 마음을 두드린 문장들을 기록하고 좋은 글귀들은 ‘좋아요’ 하여 모아보세요. 도서 문장과 무관한 내용 등록 시 별도 통보없이 삭제될 수 있습니다.
리워드 안내
  • 구매 후 90일 이내에 문장 수집 등록 시 e교환권 100원을 적립해 드립니다.
  • e교환권은 적립일로부터 180일 동안 사용 가능합니다.
  • 리워드는 1,000원 이상 eBook에 한해 다운로드 완료 후 문장수집 등록 시 제공됩니다.
  • 리워드는 한 상품에 최초 1회만 제공됩니다.
  • sam 이용권 구매 상품/오디오북·동영상 상품/주문취소/환불 시 리워드 대상에서 제외됩니다.

구매 후 문장수집 작성 시, e교환권 100원 적립

    교보eBook 첫 방문을 환영 합니다!

    신규가입 혜택 지급이 완료 되었습니다.

    바로 사용 가능한 교보e캐시 1,000원 (유효기간 7일)
    지금 바로 교보eBook의 다양한 콘텐츠를 이용해 보세요!

    교보e캐시 1,000원
    TOP
    신간 알림 안내
    프랙티컬 C# 웹툰 신간 알림이 신청되었습니다.
    신간 알림 안내
    프랙티컬 C# 웹툰 신간 알림이 취소되었습니다.
    리뷰작성
    • 구매 후 90일 이내 작성 시, e교환권 100원 (최초1회)
    • 리워드 제외 상품 : 마이 > 라이브러리 > Klover리뷰 > 리워드 안내 참고
    • 콘텐츠 다운로드 또는 바로보기 완료 후 리뷰 작성 시 익일 제공
    감성 태그

    가장 와 닿는 하나의 키워드를 선택해주세요.

    사진 첨부(선택) 0 / 5

    총 5MB 이하로 jpg,jpeg,png 파일만 업로드 가능합니다.

    신고/차단

    신고 사유를 선택해주세요.
    신고 내용은 이용약관 및 정책에 의해 처리됩니다.

    허위 신고일 경우, 신고자의 서비스 활동이 제한될 수
    있으니 유의하시어 신중하게 신고해주세요.


    이 글을 작성한 작성자의 모든 글은 블라인드 처리 됩니다.

    문장수집 작성

    구매 후 90일 이내 작성 시, e교환권 100원 적립

    eBook 문장수집은 웹에서 직접 타이핑 가능하나, 모바일 앱에서 도서를 열람하여 문장을 드래그하시면 직접 타이핑 하실 필요 없이 보다 편하게 남길 수 있습니다.

    P.
    프랙티컬 C#
    저자 모두보기
    낭독자 모두보기
    sam 이용권 선택
    님이 보유하신 이용권입니다.
    차감하실 sam이용권을 선택하세요.
    sam 이용권 선택
    님이 보유하신 이용권입니다.
    차감하실 sam이용권을 선택하세요.
    sam 이용권 선택
    님이 보유하신 프리미엄 이용권입니다.
    선물하실 sam이용권을 선택하세요.
    결제완료
    e캐시 원 결제 계속 하시겠습니까?
    교보 e캐시 간편 결제
    sam 열람권 선물하기
    • 보유 권수 / 선물할 권수
      0권 / 1
    • 받는사람 이름
      받는사람 휴대전화
    • 구매한 이용권의 대한 잔여권수를 선물할 수 있습니다.
    • 열람권은 1인당 1권씩 선물 가능합니다.
    • 선물한 열람권이 ‘미등록’ 상태일 경우에만 ‘열람권 선물내역’화면에서 선물취소 가능합니다.
    • 선물한 열람권의 등록유효기간은 14일 입니다.
      (상대방이 기한내에 등록하지 않을 경우 소멸됩니다.)
    • 무제한 이용권일 경우 열람권 선물이 불가합니다.
    이 상품의 총서 전체보기
    네이버 책을 통해서 교보eBook 첫 구매 시
    교보e캐시 지급해 드립니다.
    교보e캐시 1,000원
    • 첫 구매 후 3일 이내 다운로드 시 익일 자동 지급
    • 한 ID당 최초 1회 지급 / sam 이용권 제외
    • 네이버 책을 통해 교보eBook 구매 이력이 없는 회원 대상
    • 교보e캐시 1,000원 지급 (유효기간 지급일로부터 7일)
    구글북액션을 통해서 교보eBook
    첫 구매 시 교보e캐시 지급해 드립니다.
    교보e캐시 1,000원
    • 첫 구매 후 3일 이내 다운로드 시 익일 자동 지급
    • 한 ID당 최초 1회 지급 / sam 이용권 제외
    • 구글북액션을 통해 교보eBook 구매 이력이 없는 회원 대상
    • 교보e캐시 1,000원 지급 (유효기간 지급일로부터 7일)