목록이펙티브 c# (15)
뽕구의 개발일지
저자 : 빌 와그너역자 : 김명신출판사 : 한빛미디어ISBN :9791162240038https://www.hanbit.co.kr/store/books/look.php?p_code=B8349603240 이펙티브 C#(3판)더 나은 C# 코드를 작성하는 새로운 방법 50가지www.hanbit.co.kr2장 .NET 리소스 관리Item15 : 불필요한 객체를 만들지 말라가비지 컬렉터가 힙 메모리를 안전하게 관리해주지만, 가비지 컬렉터만 믿고 객체를 너무 많이 생성하는 것은 올바르지 못합니다.가비지 컬렉터도 결국 CPU의 리소스를 사용하기 때문이죠. 모든 참조 타입 객체는 동적으로 메모리를 할당하는데, 상위 객체가 삭제되면 가바지 컬렉터에 수집 대상이 되어버립니다.지역 변수라고 하더라도 말이죠. 따라서 참조..
저자 : 빌 와그너역자 : 김명신출판사 : 한빛미디어ISBN :9791162240038https://www.hanbit.co.kr/store/books/look.php?p_code=B8349603240 이펙티브 C#(3판)더 나은 C# 코드를 작성하는 새로운 방법 50가지www.hanbit.co.kr2장 .NET 리소스 관리Item14 : 초기화 코드가 중복되는 것을 최소화하라필드들이 증가하여 조건에 따라 다른 초기화가 필요할때, 생성자가 여러개 생기곤 합니다. C# 4.0에 추가된 기본 매개변수를 이용하여 오버로딩된 생성자들을 최소화할 수 있습니다. 기본 매개변수는 메서드 오버로딩할때 많이 써왔기 때문에 익숙한 개념입니다.아래와 같이 사용되며 생성자 호출 시 매개변수에 값을 넣지 않으면 5가 기본 값..
저자 : 빌 와그너역자 : 김명신출판사 : 한빛미디어ISBN :9791162240038https://www.hanbit.co.kr/store/books/look.php?p_code=B8349603240 이펙티브 C#(3판)더 나은 C# 코드를 작성하는 새로운 방법 50가지www.hanbit.co.kr2장 .NET 리소스 관리Item13 : 정적 클래스 멤버를 올바르게 초기화하라DB나 리소스 관련 클래스는 싱글톤 패턴을 적용해서 인스턴스를 하나만 생성하는 것이 안전합니다.회사에서 개발하면서 많이 사용했었죠. 정적 클래스에서 private 인스턴스 멤버를 하나 가지고 있고, public 메서드 하나를 만들어서 하나의 인스턴스가 리턴되도록 해왔었습니다.아래와 같은 방식으로 구현해왔어요.public class..
저자 : 빌 와그너역자 : 김명신출판사 : 한빛미디어ISBN :9791162240038https://www.hanbit.co.kr/store/books/look.php?p_code=B8349603240 이펙티브 C#(3판)더 나은 C# 코드를 작성하는 새로운 방법 50가지www.hanbit.co.kr2장 .NET 리소스 관리Item12 : 할당 구문보다 멤버 초기화 구문이 좋다때에 따라 클래스의 생성자를 여럿 설계하기도 합니다.보통 매개변수를 다르게 하죠.아래처럼 멤버 초기화를 수행하여 생성자에서 멤머 할당 누락을 예방할 수 있습니다. public class Controller{ private List numbers = new List(); //멤버 초기화 수행 private List names; //..
저자 : 빌 와그너역자 : 김명신출판사 : 한빛미디어ISBN :9791162240038https://www.hanbit.co.kr/store/books/look.php?p_code=B8349603240 이펙티브 C#(3판)더 나은 C# 코드를 작성하는 새로운 방법 50가지www.hanbit.co.kr2장 .NET 리소스 관리Item11 : .NET 리소스 관리에 대한 이해.NET 개발자라면 메모리가 관리되는 .NET 환경에서 메모리와 리소스들이 어떻게 돌아가는지 알아야 합니다.특히 가비지 컬레터는 더더욱 중요하죠. 보통 객체지향에서 가비지 컬렉터는 개발자가 메모리 해제를 신경쓰지 않고 개발에 전념할 수 있도록 해주는 아주 고마운 녀석인데,시스템 리소스의 경우 개발자가 직접 관여한다면 효과적인 가비지 컬..
저자 : 빌 와그너역자 : 김명신출판사 : 한빛미디어ISBN :9791162240038https://www.hanbit.co.kr/store/books/look.php?p_code=B8349603240 이펙티브 C#(3판)더 나은 C# 코드를 작성하는 새로운 방법 50가지www.hanbit.co.kr1장 C# 언어요소Item10 : 베이스 클래스가 업그레이드된 경우에만 new 한정자를 사용하라베이스 클래스란 다른 클래스가 상속받을 수 있는 부모 클래스를 의미하죠.파생 클래스란 베이스 클래스를 상속받아 베이스의 멤버(필드, 메서드)를 물려받고 필요에 따라 재정의하거나 확장할 수 있습니다. 상속에서 주요 키워드를 파악해볼 필요가 있습니다.키워드선언 위치목적다형성virtual베이스 클래스파생 클래스에서 ov..
저자 : 빌 와그너역자 : 김명신출판사 : 한빛미디어ISBN :9791162240038https://www.hanbit.co.kr/store/books/look.php?p_code=B8349603240 이펙티브 C#(3판)더 나은 C# 코드를 작성하는 새로운 방법 50가지www.hanbit.co.kr1장 C# 언어요소Item09 : 박싱과 언박싱을 최소화하라먼저 박싱과 언박싱은 값 형식과 참조 형식 상호간 변환에 관련이 있고, 성능과 메모리 관리에도 영향을 미치기 때문에개념에 대해 짧게 한번 알아보겠습니다. 박싱이란 값 형식(int, float, struct 등)을 참조 형식(object, string )로 변환하는 과정입니다.스택 메모리에 저장된 값을 힙 메모리에 새로운 객체로 복사해서 object ..
저자 : 빌 와그너역자 : 김명신출판사 : 한빛미디어ISBN :9791162240038https://www.hanbit.co.kr/store/books/look.php?p_code=B8349603240 이펙티브 C#(3판)더 나은 C# 코드를 작성하는 새로운 방법 50가지www.hanbit.co.kr1장 C# 언어요소Item08 : 이벤트 호출 시에는 null 조건 연산자를 사용하라이벤트를 호출할 때, 이벤트가 등록된 이벤트 핸들러가 없다면 null 참조 예외가 뜨면서 YOU DIE를 경험할 수 있습니다.개발하면서 방심하면 바로 마주쳤던 예외였어요.이를 방지하려고 if(이벤트 != null) 이렇게 넣었었는데 조건문 통과했다가 실제 호출부에서 에러가 날 때도 있었습니다.if문을 넘어가는 순간 이벤트 핸..
저자 : 빌 와그너역자 : 김명신출판사 : 한빛미디어ISBN :9791162240038https://www.hanbit.co.kr/store/books/look.php?p_code=B8349603240 이펙티브 C#(3판)더 나은 C# 코드를 작성하는 새로운 방법 50가지www.hanbit.co.kr1장 C# 언어요소Item06 : 델리게이트를 이용하여 콜백을 표현하라델리게이트란 함수 포인터와 유사한 개념으로, 메서드를 참조할 수 있는 타입입니다.타입과 매개변수가 동일한 모든 메서드를 변수처럼 넘기고 실행할 수 있게 해주죠.즉, 메서드를 캡슐화한 객체가 되겠습니다. 콜백 혹은 이벤트를 활성화하는데 델리게이트는 최적의 방법이고, +=를 쓰는 델리게이트 체인을 통해 멀티캐스트 방식으로 여러 개의 메서드 호..
저자 : 빌 와그너역자 : 김명신출판사 : 한빛미디어ISBN :9791162240038https://www.hanbit.co.kr/store/books/look.php?p_code=B8349603240 이펙티브 C#(3판)더 나은 C# 코드를 작성하는 새로운 방법 50가지www.hanbit.co.kr1장 C# 언어요소Item06 : nameof() 연산자를 적극 활용하라다른 언어로 개발된 프로그램 사이 데이터 주고 받는 일이 증가함에 따라 문자열 식별자 기반 통신 라이브러리가 많아졌습니다.이 때문에 의미는 있는 문자열이지만 컴파일러에겐 일반 문자열이 되어버렸죠.타입 정보가 손실된 것입니다.이를 개선하기 위해 C#은 nameof() 연산자를 C# 6.0부터 도입하였습니다. nameof(MyProperty..