나에게 필요한 지식과 기술을 검색해 보세요.

Effective C# : 강력한 C# 코드를 구현하는 개발지침 50가지

지은이

빌 와그너

옮긴이

김명신

출간일

2007.01.10

레벨

중고급

평점

4(1명)

정가

20,000

판매가

18,000

총 결제 금액

10%

18,000

적립 예정

900P

당신은 이미 훌륭한 C# 개발자이다
그러나, 이 책이 당신을 더욱 뛰어난 개발자로 거듭나게 해줄 것이다

C#은 C++, Java, C와 닮아 있기 때문에 배우기 쉬운 장점이 있지만 반대로 불리한 점도 없지 않다. 다른 언어의 경험이 있는 C# 개발자들은 더 나은 방법들이 있음에도 종종 예전의 방식들을 여전히 고수하는 경향이 있다. 저자도 예외는 아니다. 저자는 C#을 접하기 전에 C++를 10년 간 사용하였다.

『Effective C# : 강력한 C# 코드를 구현하는 개발지침 50가지』는 보다 빠르고 효과적이며 신뢰할 수 있는 소프트웨어를 개발하기 위해서 개발자들이 반드시 알아야 하는 C#의 강력한 특징들을 50개의 항목으로 정리하였다.

이 책은 수백 만 개발자의 필독서로 알려져 있는『Effective C++』(Addison-Wesley, 1998)와 『Effective Java』(Addison-Wesley, 2001)를 계승하고 있다. 명쾌하고, 실용적인 설명, 전문가의 조언과 더불어 현실적인 다양한 코드 예제들을 포함하고 있다. 더불어 C# 언어 개발자가 저지르기 쉬운 다양한 함정에 대해서도 폭넓게 다루고 있다. 저자는 이 책 전반에 걸쳐 C++ 언어를 이용하여 개발할 때에 자주 사용되는 개발방법들이 C#을 이용할 경우에 문제를 유발시킬 수 있음을 강조하고 있다.

주요내용
  • 두 가지 형태의 상수(컴파일타임 상수, 런타임 상수) 타입을 효과적이고 유지보수가 쉽도록 사용하는 방법(ITEM 2)
  • 복잡한 오류 확인 루틴이 필요하지 않는, immutable 타입을 작성하는 방법(ITEM 7)
  • 잦은 문제상황을 만들어 낼 가능성이 있는 C#의 특징들을 피하는 방법(ITEM 10)
  • Garbage Collection, boxing, unboxing을 최소화하는 방법(ITEM 16, 17)
  • interface와 delegate의 장점을 최대한으로 활용하는 방법(ITEM 19`~22)
  • C# 언어 특징을 그대로 유지하면서도 CLS와 호환되는 어셈블리를 만드는 방법(ITEM 30)
  • 응집도가 높은 작은 크기의 어셈블리를 작성하여 신뢰성과 유지보수의 편의성을 확보하는 방법(ITEM 32)
  • 닷넷 런타임의 진단기능을 최대한으로 활용하는 방법(ITEM 36)
  • reflection을 사용해야 하는 경우와 사용하지 말아야 하는 경우를 구분하는 방법(ITEM 42, 43)
  • C# 2.0의 주요 특징에 대한 검토(ITEM 49)
추천사

미국에 있습니다만 아직도 원서를 읽는 데는 상대적으로 더 많은 시간이 걸리기 때문에 시간이 부족할 때는 번역서를 우선으로 찾곤 하는데, 무조건 번역서가 더 나은 결과를 보장하는 것은 아닙니다. 사실 번역서도 얼마나 충실하게 번역했는지가 중요하지요. 오히려 오역과 비문이 넘치는 번역서는 또 다시 원서를 펼쳐 보는 수고를 하게 만드니까요. C++ 개발자들에게 『Effective C++』, 『More Effective C++』, 『Effective STL』 시리즈가 갖는 의미처럼 C# 개발자에게 『Effective C#』은 필독서임에 틀림없습니다. 여기에 역자의 내공까지 더해지면서 훌륭하게 한국어판으로 출간된 것은 정말 유쾌한 일이 아닐 수 없습니다. 원서의 내용이 워낙 충실한 만큼, 이 번역서가 한국에 있는 C# 개발자분들(혹은 저처럼 해외에서 일하고 있는 우리나라 개발자분들)에게 더 좋은 코드와 더 나은 해결책을 제시할 것이라 생각합니다.
-안정환(whatisid), NHN USA Game Development Group

『Effective C#』의 내용을 몰라도 C# 기본 문법을 바탕으로 코딩은 가능했습니다. 그러나 『Effective C#』 베타 리더의 기회를 가지게 되면서 좀 더 정확하고 효율적인 C# 코딩에 대해 조금씩 고민하게 되었습니다. 또한 이 책을 통해 그동안 닷넷에 대해 가지고 있던 기본 지식을 더 다지는 계기가 되었습니다. 제게 프로그래머스러운(? ^^) 고민을 하게 해준 역자에게 감사의 마음을 전합니다.
-김순임, 한국 마이크로소프트

역자님의 강력한 포스에 걸맞는 책의 선택이었다고 생각합니다. C# 언어의 깊은 속내와 원리를 알고 싶으실 때, 여러 베타리더들까지 같이한 이 책이 최선의 선택이라고 느껴집니다.
-강효관, 소프트포럼

나 자신을 뒤돌아보고 반성하게 하는 책이었습니다. 이 책을 읽고 나 자신에게 물었습니다. "너 그동안 C#을 알고 있었던거 맞냐?"
-김경복, 삼성 SDS

저자

목차

1장. C# 언어 요소
ITEM #1: 데이터 멤버 대신에 항상 프로퍼티를 사용하라
ITEM #2: const보다는 readonly가 좋다
ITEM #3: cast보다는 is나 as가 좋다
ITEM #4: #if대신 Conditional Attribute를 사용하라
ITEM #5: 항상 ToString( )을 작성하라
ITEM #6: value 타입과 reference 타입을 구분하라
ITEM #7: immutable atomic value 타입이 더 좋다
ITEM #8: value 타입을 사용할 때 0이라는 값이 의미를 가질 수 있도록 하라
ITEM #9: ReferenceEquals( ), static Equals( ), instance Equals( ), operator==의 상호 연관성을 이해하라
ITEM #10: GetHashCode( )의 함정을 유의하라
ITEM #11: foreach 루프가 더 좋다

2장. 닷넷 리소스 관리
ITEM #12: 할당문보다는 변수 초기화를 사용하는 편이 더 좋다
ITEM #13: static 클래스 멤버는 static 생성자를 사용하여 초기화하라
ITEM #14: 연쇄적인 생성자 호출을 이용하라
ITEM #15: 자원해제를 위해서 using과 try/finally를 이용하라
ITEM #16: Garbage를 최소화하라
ITEM #17: boxing과 unboxing을 최소화하라
ITEM #18: 표준 Dispose 패턴을 구현하라

3장. C# 설계사항 구현
ITEM #19: 상속보다는 interface를 정의하고 구현하는 것이 좋다
ITEM #20: interface의 구현과 virtual 메서드의 overriding을 구분하라
ITEM #21: delegate를 이용하여 콜백을 표현하라
ITEM #22: 이벤트를 이용하여 외부로 노출할 인터페이스를 정의하라
ITEM #23: 클래스 내부 객체에 대한 reference를 반환하는 것을 피하라
ITEM #24: 명령적 프로그래밍보다 선언적 프로그래밍이 더 좋다
ITEM #25: serializable 타입이 더 좋다
ITEM #26: IComparable과 IComparer를 이용하여 순차 관계를 구현하라
ITEM #27: ICloneable의 구현을 피하라
ITEM #28: 형변환 연산자의 구현을 피하라
ITEM #29: 기반 클래스의 변경이 영향을 줄 경우에만 new 한정자를 사용하라

4장. 이진 컴포넌트 작성
ITEM #30: CLS를 준수하는 어셈블리가 더 좋다
ITEM #31: 작고 단순한 메서드가 더 좋다
ITEM #32: 작고 응집도가 높은 어셈블리가 더 좋다
ITEM #33: 타입의 가시성을 제한하라
ITEM #34: 웹 API는 큰 단위로 작성하라

5장. 프레임워크의 사용
ITEM #35: 이벤트 핸들러보다 override를 사용하는 편이 낫다
ITEM #36: 닷넷 런타임의 진단기능을 사용하라
ITEM #37: 표준 환경설정 메커니즘을 이용하라
ITEM #38: 데이터 바인딩을 사용하라
ITEM #39: 닷넷의 유효성 검증 기능을 사용하라
ITEM #40: 적절한 collection 개체를 이용하라
ITEM #41: 새로운 구조체보다는 DataSet이 좋다
ITEM #42: reflection을 단순화하기 위해서 attribute를 사용하라
ITEM #43: reflection을 과도하게 사용하지 말라
ITEM #44: 애플리케이션에 특화된 예외 클래스를 완벽하게 작성하라
  
6장. 기타
ITEM #45: 견고한 예외보증 기법이 더 좋다
ITEM #46: Interop를 최소화하라
ITEM #47: 안전한 코드가 더 좋다
ITEM #48: 활용할 수 있는 다양한 툴과 리소스에 대해서 알아두라
ITEM #49: C# 2.0의 주요특징
ITEM #50: ECMA 표준을 익혀라

리뷰

오탈자

20,000

10%

18,000