본문 바로가기
반응형

C#59

[Effective C#] Item14 초기화 코드가 중복되는것을최소화 하라. 초기화 코드가 중복되는것을 최소화 하라. 다른 생성자를 화출하여 초기화 과정의 일부를 위임 공통으로사용하는 생성자를 다른 생성자에서 호출하여 변수에 대한 중복 초기화 코드를 제거 public class Myclass { private List coll; //데이터 컬렉션 private string name //인스턴스 변수 public Myclass() : this(0,""){} public Myclass(int count) : this(count, string.Empty){} public Myclass(int count, string name) { coll = (count > 0) ? new List(count) : new List(); this.name = name; } } 다른 생성자를 호출하여 초.. 2022. 7. 8.
[Effective c#] Item11 ~ Item13 .NET 리소스 관리에 대한 이해 힙에 관한 메모리 관리는 가비지 콜렉터가 완전히 책임 진다. 이외에 비관리 리소스는 개발자가 관리해야함 더보기 비관리 리소스 - finalizer와 IDisposable 인터페이스 라는 2개의 메커니즘을 제공 => finalizer는 객체를 가비지로 판단한 경우 이 객체를 다른 큐에 삽입하여 나중에 finalizer를 호출할 준비만 수행함 가비지콜렉터의 세대 개념 0세대 : 수집 절차 이후 생서된 객체들 1새대 : 두번이상 수집절차에서 살아남은객체들 수집 절차 ? 기본적으로 0세대 객체만 검사 1세대는 대력 10번에 한번 검사 2세대는 대력 100번에 한번 검사 비관리 리소스를해제하는 좋은 방법은 IDisposable을 사용하는 것이다. [Item12] 할당 구문보다 멤.. 2022. 7. 8.
[Effective C#] Item6 ~ Item 10 [Item6] nameof 연산자를 적극 확용하라. 항상 로컬이름을 문자열로 반환하는 역할을 한다. 심볼의 이름을 평가하며 타입, 변수, 인터페이스, 네임스페이스 에 대해 사용할 수 있다. 심볼의 이름을 바꾸거나 수정할 때도 손쉽게 반영 가능하다. 항상 로컬 이름을 문자열로 반환한다. Ex) 완전 정규화된 이름이 System.Int.MaxValue 이더라도 항상 로컬이름 MaxValue를 반환 [Item7] delegate를 이용하여 콜백을 표현하라. delegate를 이용하면 타입 안정적인 콜백을 정의할 수 있다. .Net Framework 라이브러리는 Predicate, Action, Func와 같은 형태로 자주 사용되는 delegate를 정의해두고 있다. 더보기 Predicate : 조건을 검사하여.. 2022. 7. 8.
[Effective C#] Item1 ~ Item5 [Item1] 지역변수를 선언할 때는 var를 사용하는 것이 낫다. C# 언어가 익명 타입을 지원한다. 개발자가 코드를 읽을때 쉽게 짐작할 수 없다면 명시적 타입을 기술하는것이 낫다. [Item2] Const 보다는 readonly가 좋다. 컴파일 타임 상수(Const)보다는 런타임 상수(readonly)를 사용하라 컴파일 타임 상수는 성능이 매우 중요하고 상수의 값이 절대 바뀌지 않을때만 사용 더보기 컴파일타임과 런타임 - 컴파일 타임 : 작성된 코드를 컴파일 과정을 통해 실행 가능한 프로그램으로 편집하는 과정 - 런타임 : 컴파일 과정을 마친 프로그램을 동작 시키는 과정 런타임 상수는 메서드 내에서 선언할 수 없다.(컴파일은 가능) 컴파일 타임 상수는 내장된숫자형, enum, 문자열, null 만 가.. 2022. 7. 8.
반응형