도서 리뷰

초보자부터 숙련자까지 배우는 '이것이 C#이다'

귀염둥이 팡무 2021. 2. 21. 16:31

열심히 활동해야지 생각만 하고 회사 업무로 정신이 없어 항상 뒤쳐지고 있는 성스러운기사입니다.

작년에는 훈련소와 안드로이드 개발 팀장을 맡으면서 리뷰어 활동을 거의 하지 않았습니다.

 

올해 8월 20일에 산업기능요원이 끝나기도 하고 마음의 양식(?) 개발 지식(?)을 다시 채우기 위해

한빛미디어 '나는 리뷰어다 2021'를 신청하였고, 선정되어 올해의 첫 도서 리뷰를 해보도록 하겠습니다.

 

우선 작성하기 앞서 이전 리뷰글들을 보시면 아시겠지만, 도서의 내용 위주로 사진과 함께 느낀점을 설명 드리고 있으니 도서 구매 전 많은 도움이 되길 바랍니다!


이것이 C#이다

Let's get it.

고등학교 1학년 때 WinForm C# 개발을 시작으로 현직장 취업 전까지 4년동안 Unity로 2D/3D/Multi/AR/VR/Chat 등 다양하게 개발 해왔습니다.

 

하지만 단순히 블로그 포스팅과 구글링을 통한 독학이라 현업분과 대회를 함께 나가면 분명 기초인데 처음 보는 방법에 많이 부족하다고 느꼈었습니다.

 

이번 기회에 차근차근 정석대로 배워보도록 하겠습니다.


데이터 타입

우선 초반 내용은 다른 도서와 동일하게 기본적인 정보를 안내하고 있습니다.

C#에 대해 아무것도 모르는 초보자도 쉽게 따라할 수 있을 정도로 매우 친절하게 설명하고 있습니다

도서 제목을 보았을 때 에는 '기초적인 내용은 두루뭉실하게 넘길 것 같은데...?' 라는 느낌을 받았었는데,

이처럼 변수에 대해서도 글과 그림으로 하나하나 입문자도 쉽게 배울 수 있도록 설명하고 있습니다.

void Main(string[] args)

이런 식으로 간단한 내용이지만 단순히 글로 표현하는게 아닌, 그림으로 함께 표현을 한 것이 입문자를 위해 많이 신경썼다는 것을 느꼈습니다.

Simple & Detail

조건문, 반복문 등 이러한 제어문은 모든 프로그래밍 언어에 대해 기본이자 핵심 요소이죠

본 도서에서는 각각 제어문의 기능에 대해 중요 포인트를 설명하고 예시 코드도 함께 제공하고 있어 코드를 모르는 입문자도 따라할 수 있게 도와줍니다.

"배열과 컬렉션은 10장에서 설명하는 foreach 문을 먼저 설명하려니 난감하기 그지 없네요."

중간 중간 개그포인트(?)가 존재하여 읽는 동안 여러 번 웃었습니다.

추가적으로 단순히 배열 관련 내용이라 잠깐 그림으로 설명하는 것이 아닌, 이해를 돕기 위한 포인트로 도형이나 그림을 통한 표현도 많이 나오는 것을 보고 많은 신경을 썼다는 것을 느꼈습니다.

Array 내부 함수

저도 독학할 때에 있어 성장하는데 불편했던 부분이 특정 기능을 구현할 때 관련 함수가 있는지 모르니 나만의 방법으로 우회하여 개발하다 나중에 이런 기능 또는 함수가 있었구나를 깨닫고 성장했다는 기분 좋음과 함께 이전에 만든 코드에 대해 아쉬움을 느꼈습니다.

 

그런데 본 도서에서는 관련된 함수가 있다면, 관련 함수와 설명을 표로 알려주고 있어, "아 이런 함수가 있었지" 또는 "이런 함수를 사용하면 되겠구나" 라고 깨달을 수 있게 제공하고 있습니다.

'인터페이스 작명법은 엿장수 마음대로지만, C# 프로그래머들 사이에서는 인터페이스 이름 앞에 'I'를 붙이는 것이 관례

저도 처음 알았습니다.

이런식으로 많은 개발 팁을 제공하고 있어 이미 C#을 다룰 줄 알고 개발하는 사람들도 배워가는 내용이 많습니다

간단한 상식이지만, 막상 사용할 때 검색해보는 Date Format

이처럼 많이 사용하는 형식이나 정보를 표로 안내를 해주고 있어 단순히 C#이라는 언어 외에도 많은 추가적인 상식을 얻을 수 있습니다.

ArrayList에 객체를 추가할 수 있는 이유!

저도 단순히 List는 추가를 못하고 ArrayList는 추가 가능하다고만 알고있고 자세히는 알아볼 생각도 안했는데,

ArrayList는 추가할 수 있는 이유를 설명해주는 등 자세한 분석과 함께 팁을 제공해주고 있어 많이 배워갔습니다.

파이썬만 되는거 아니였어요...?

또한 배열에서 [..] 이렇게 접근 하는 것은 파이썬에서만 가능한줄 알았는데 C#에서도 가능하다는 것을 처음 알게되었습니다.. 그동안 바보같이 for문으로 가져왔었네요...

실행 결과

보통 다른 도서를 보면, 소스코드는 나와있지만 일부 실행 결과가 누락된 경우도 봐왔습니다.

그렇지만 본 도서에서는 실행 결과가 꼭 나오고 있어 굳이 코딩을 하지 않고도 이런식으로 결과가 나온다는 것을 확인할 수 있어 좋았습니다.

다중 상속

이전에 다중 클래스를 상속받으려고 하여 검색을 해보니 불가능하다고 배웠는데, 이를 해결하는 방법 등 여러가지 정보도 역시 제공하고 있어 많은 도움을 받았습니다.

왜 사용을 해야하는가? 그 이유는?

3년전만해도 단순히 블로그 글을 보고 독학을 했기에 나중에 getter, setter가 있다는 것을 알게됐고 '굳이 사용해야하나?'라는 생각을 하였습니다. 개발을 하다보니 사용해야하는 이유를 스스로 깨닫게 되고 그 이후로 사용하려고 노력하였습니다만 만약 깨닫지 못하였다면 쭉 사용을 하지 않았을듯 합니다. 본 도서에서는 어떠한 기술 또는 내용에 대해서 사용을 해야하는 이유를 설명하고 납득시켜주기에 잘못된 개발(?)을 하지 않도록 어느정도 방향을 잡아주는데 도움이 될 듯 합니다.

C# 7.0부터는 자동 구현 프로퍼티를 선언함과 동시에 초기화 수행이 가능합니다!

C# 3.0 이전에는 이런 문제점이 있었다... C# 7.0에서는 이렇게 바뀌었다... C# 9.0 에서는 이렇게 추가되었다...

이러한 C# 버전에 따른 변화에 대한 내용도 나오고 있어 짤막한 상식이자, 본인이 현재 사용하고 있는 C# 버전에 따라 무엇을 사용하면 되는지를 알 수 있습니다.

C# 9.0에서는 간편해졌어요!

한가지 예시로 같은 프로퍼티를 설명하는 내용 중 C# 9.0 부터 추가된 기능을 안내해주고 있습니다.

즉 "자신이 이전 버전부터 개발했다면 몰랐을, 이후에 개발했다면 이전 버전에서는 지원을 하지 않는다"는 것을 알 수 있습니다.

참, 아직 안 만들어봤죠? 그럼 만들어봅시다

이론을 알려주고 끝이 아닌, 해당 이론을 통해 직접 예제 프로그램을 만들어보도록 나서주고 있어 책이 시키는 내용으로 따라만 한다면 자신의 기술로 충분히 만들 수 있습니다.

"그 후로 프로그래머들은 행복하게 잘 살았답니다"라는 꿈을 꾸었습니다

앞에서도 말씀드렸다 싶이 중간중간 개그요소가 있습니다. 역사라던지 잡다한 팁을 설명할 때에도 이렇게 과하지 않게 살짝 넣어주어 딱딱하게 외우는 것이 아닌, 재미있게 이해하고 배울 수 있습니다.

챕터 별 목차

챕터 별 목차에 대해 설명을 드리지 않았었네요. 각 내용에 따라 총 22개의 챕터로 분류가 되어있고, 챕터가 시작할 때 무엇을 배우는지 '핵심 개념'으로 요약해주고 '학습 흐름'을 통해 배우는 순서를 알려줍니다.

멀티 스레드의 장점은 성능이지만, 너무 많이 사용하면 성능이 더 저하됩니다.

'이 기술이 최고야'라 말하고 끝나는 것이 아닌, 'A가 B보다는 좋지만 그렇다고 A가 항상 좋은 것은 아니야'라는 내용도 함께 제공하기에, '개발하는데에 있어 정답은 없다' 라는 것을 알려줍니다. 

Shoot And Forget

제가 항상 비동기를 설명할 때 에는 '비절차적으로 수행된다', '동시에 진행된다' 정도로 설명했는데, 여기서는 다른 방법으로 쉽고 간단하게 설명을 해주더라구요. 딱딱한 설명이 아닌 쉽게 낮추어 설명하여 입문자도 쉽게 이해할 수 있을 듯 합니다. 저도 나중에 위의 내용대로 설명해야겠네요

역사란 무엇인가

앞서 말씀드렸다 싶이 이론과 결과를 보여주고 끝나는 것이 아닌, 역사도 함께 설명해주고 있어 단순히 배우고 끝나는게 아니라 배경 지식도 습득할 수 있는 부분이 매력적이였습니다. 

서버와 클라이언트. 네트워크.

여기서부터는 직접 서버와 클라이언트를 만들면서 TCP/IP에 대해 이해할 수 있도록 구성되어 있습니다.

네트워크는 이론적인 부분도 필요한데 그에 대해 여러 예시나 내용을 빗대어 설명하기에 쉽게 배울 수 있을 듯 합니다.

우리는 살았습니다. 만세~

사실 이 부분은 개인적으로 마음에 들어서 넣어봤습니다. 자신의 규격이 뛰어나다고 춘추전국시대를 펼쳤다면 프로그래머들은 배울게 너무 많아 정신없었을 텐데 TCP/IP 표준 프로토콜로 자리잡아 우리는 살았다고 표현을 하시네요 정말 재밌었습니다ㅋㅋ

 

오랫만이야 WinForm!

많은 내용은 아니지만, WinForm에 대한 내용도 포함되어 있습니다.

저도 VB6에서 WinForm으로 개발을 시작하게 되면서 C#을 처음 경험하였습니다.

 

WinForm 그림 설명

WinForm의 경우 기본적으로 GUI이기에 글만으로는 설명이 부족하거나 헷갈릴 수 있는데, 그림으로 표현하여 이해하는데 돕고 있습니다.


마무리 평가


글을 쓰다보니 내용이 많이 길어진 것 같네요. 마지막은 짧고 굵게 평가를 해보겠습니다

 

[장점]

1. 아무런 지식이 없는 입문자도 배경지식없이 배울 수 있습니다.

2. C#을 하는 사람도 배울 내용이 매우 많습니다. (즉 많은 내용을 알려주고 있습니다)

3. 그림으로 부가 설명을 하는 부분이 많아 이해하는데 많은 도움을 줍니다.

 

[단점]

1. GitHub 레포지토리가 없다

 

단점을 아무리 생각해봐도 저는 생각나지 않습니다. 보통 어렵다던지 너무 쉽다던지 내용이 아쉽다던지 하나라도 아쉬움이 있는데 고민해봐도 모르겠네요...

 

굳이 찾아보자면 GitHub 코드가 없어 Lite하게 코드 테스트해보고 싶은 사람이라면 아쉬울 듯 하네요..

보통 입문자/경험자 두 타겟으로 책을 쓰면 이도저도 아닌게 되는데 이 책은 처음부터 끝까지 완벽했습니다.

 

단순히 리뷰이기 때문에 하는 말이 아닌, 정말로 주변에 C#을 배우고 싶어하는 사람이 있다면 저는 무조건 이 책을 추천합니다.