2021/08/30 5

.Net Framework Guideline - Type Design(형식 디자인)-2

인터페이스(Interface) 디자인 대부분 API는 클래스 및 구조체를 사용하여 모델링 하는 것이 좋지만, 인터페이스가 적합한 경우가 있다. CLR은 다중 상속을 지원하지 않지만, 인터페이스를 사용하면 다중 상속의 효과를 얻을 수 있다. - 멤버가 없는 인터페이스인 마커 인터페이스(marker Interfaces)는 사용하지 않는다. *마커 인터페이스 : https://www.csharpstudy.com/Story/Article/7 만약 클래스에 특정 특성을 표시해야 하는 경우(Marker), 마커 인터페이스가 아닌 attribute를 이용해야 한다. - 값 형식을 포함하는 형식에서 몇 가지 공용 API를 지원해야한다면 인터페이스를 정의한다. - 다른 타입을 이미 상속받은 형식에서 기능을 지원해야할 경..

개발/C# 2021.08.30

.Net Framework Guideline - Type Design(형식 디자인)-1

형식 디자인 (Type Design) 지침 클래스(Classes) : 참조 형식의 일반적인 경우. 대다수 프레임워크에서 사용하는 형식 인터페이스(Interfaces) : 참조 형식과 값 형식 둘 다 구현. 다중 상속을 시뮬레이션 할 수 있다. 구조체(Structs) : 값 형식의 일반적인 경우, 단순 타입으로 사용 열거형(enums) : 값 형식. 요일, 색상 등 간단한 값 세트를 정의하는데 사용 정적 클래스(Static classes) : static member(정적 멤버)의 컨테이너로 사용되는 형식. 대리자(Delegates), 예외(Exceptions), 속성(Attributes), 배열(Array) : 모두 특정 용도로 사용되는 참조 형식, 각 형식은 관련된 멤버가 세트가 잘 이룰 수 있도록 구..

개발/C# 2021.08.30

.Net Framework Guideline - Member Design-3

매개 변수 디자인 - 멤버에 필요한 기능을 제공하는 최소 파생 매개 변수(least derived parameter) 형식을 사용한다. 예를 들어 컬렉션을 열거하고 각 항목을 출력하기 위한 메서드에서는 ArrayList나 IList가 아닌 IEnumerable을 매개 변수로 사용한다. - 예약된 매개 변수를 사용하지 않는다. 나중에 새로운 멤버에 대한 추가가 필요한 경우 새 오버로드를 추가한다. - 포인터, 포인터 배열 또는 다차원 배열을 매개 변수로 사용하는 public method는 사용하지 않는다. 포인터 및 다차원 배열을 제대로 사용이 어려워 대부분 API에서 이러한 형식을 매개 변수로 사용하지 않도록 디자인한다. - 오버로드 함수 간에 매개 변수 순서가 일치하지 않게 되더라도, by-value ..

개발/C# 2021.08.30

.Net Framework Guideline - Member Design -2

필드 디자인 캡슐화는 객체 지향 디자인에서 가장 중요한 개념이다. 이 원칙에 따르면 객체 내에 저장된 데이터에는 해당 객체에서만 접근할 수 있어야 한다. 이 해석은 모든 필드가 프라이빗이야 함을 의미한다. 상수 및 정적 읽기 전용 필드(static read-only fieled)와 같은 필드는 정의에 따라 변경할 필요가 없기 때문에 이 제한에서 제외한다. - public/protected 인스턴스 필드를 제공하지 않는다. 대신 필드에 접근하기 위한 속성(Property)을 제공해야 한다. - 변경되지 않는 상수에는 상수 필드를 사용한다. 컴파일러는 'const'필드의 값을 호출 코드에 직접 포함한다. 따라서 호환성을 손상하지 않고 const 값을 변경할 수 없다. - 미리 정의된 객체 인스턴스에 publ..

개발/C# 2021.08.30

.Net Framework Guideline - Member Design -1

멤버 오버로드 멤버 오버로드(Member Overload)는 매개 변수의 개수나 형식만 다르고 이름은 같은 멤버를 둘 이상 만드는 것을 의미한다. 다음과 같이 WriteLine은 오버로드 되어있다. public static class Console { public void WriteLine(); public void WriteLine(string value); public void WriteLine(bool value); ... } 매개 변수를 가질 수 있는 메서드, 생성자 인덱싱된 속성맞 오버로드할 수 있다. 오버로드는 재사용 가능한 라이브러리의 유용성(usability), 생산성(productivity), 가독성(readability)을 개선할 수 있는 기법으로, 매개 변수 개수를 오버로드하여 더 간..

개발/C# 2021.08.30
반응형