goldw***
2018-02-20

서론
오늘 소개할 책은 Effective C# 이다. 프로그래밍 분야에 종사하고 있는 사람이라면 "Effective" 시리즈의 책(Effective C++, Java, Python ...)들을 적어도 한 번은 접해 보았을 것이다. 개인적으로 Effective 시리즈의 책들을 무척 좋아하는데 그 이유는 각 프로그래밍 언어 전문가들의 경험에서 우러나오는 훌륭한 프로그래밍 기법들을 많은 시간과 노력을 들이지 않고 배울 수 있기 때문이다. 그리고 이 책들에 실린 기법들은 실제 개발을 하면서 고민하게 되는 많은 문제들을 간단 명료하게 설명하고 그래서 "이렇게 개발해야 한다"는 결론이 명확해서 실제 업무에도 적용하기가 무척 용이하다.
구성
이 책은 총 300 페이지, 5 Chapter로 구성되어 있으며 50가지의 효과적인 프로그래밍 기법에 대해 설명하고 있다.
* CHAPTER 1 C# 언어 요소
* CHAPTER 2 .NET 리소스 관리
* CHAPTER 3 제네릭 활용
* CHAPTER 4 LINQ 활용
* CHAPTER 5 예외 처리
50가지의 프로그래밍 기법들의 제목은 대부분 명확한 문장 형식으로 작성되어 있다.
* 아이템1: 지역변수를 선언할 때는 var를 사용하는 것이 낫다.
* 아이템12: 할당 구문보다 멤버 추기화 구문이 좋다.
* 아이템 20: 타입 매개변수가 IDisposable을 구현한 경우를 대비하여 제네릭 클래스를 작성하라.
* 아이템 29: 컬렉션을 반환하기보다 이터레이터를 반환하는 것이 낫다.
* 아이템 45: 메서드가 실패했음을 알리기 위해서 예외를 이용하라.
C# 언어를 잘 아는 개발자나 혹은 이 책을 읽었으나 해당 기법이 잘 기억나지 않는 개발자라도 이 책의 목차만 참고하면 많은 기법을 바로 떠올리면서 신속히 실무에 사용하기가 쉽도록 되어 있다. 그리고 각 기법들을 설명하면서 간단한 샘플 코드를 예로 들면서 이해를 돕고 있다. 또한 동일한 동작을 수행하는 권장 코드와 대조 코드를 함께 비교하면서 설명하기 때문에 한층 이해력을 높일 수 있다. 무엇보다도 가장 좋았던 점은 CLR이나 컴파일러 등 개발 도구의 뒤에서 은밀히 수행되는 부분이나 최적화 과정들을 이해하기 쉽도록 코드 예제로 보여줌으로써 효율적인 코드를 작성하는데 고려해야 하는 관점을 언어 자체에서 다른 개발 도구들로 확장해서 생각할 수 있도록 하는 기회를 제공해 주었다는 점이다.
결론
Effective C#는 해당 언어의 기능들과 사용법을 소개하는 일반적인 프로그래밍 언어 책과는 많이 다르다. C# 전문가들이 수많은 경험을 통해 알아낸 효율적인 프로그래밍 기법과 노하우를 포함하고 있는 책이라 실제 개발 실무에서 많은 도움을 받을 수 있다. 또한 왜 이렇게 작성해야 하는지에 대한 이유를 C#,CLR(Common Language Runtime), JIT(Just in Time) 컴파일러 등을 복합적으로 고려하여 설명하고 비슷한 예제까지 제공하기 때문에 어려운 내용도 명확히 이해가 가능하다.
다만 이 책의 대상이 C# 언어의 기본 기능을 숙지하고 있는 중급 개발자 이상으로 정해져 있기 때문에 처음 C#을 접하거나 익숙하지 않은 개발자들이 읽기에는 조금 무리가 있다. 하지만 자신의 프로그래밍 실력이 정체되어 있거나 혹은 C# 언어의 고급 개발자를 목표로 하는 개발자들은 꼭 읽어보기를 강력히 추천한다.