2021/08 18

.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

.Net Framework Guideline - Naming Rule(.net 프레임워크 디자인 지침 - 명명 지침) 정리

대/소문자 표기법 식별자용 대/소문자 규칙 식별자 내 단어를 구분하기 위해서 식별자 각 단어의 첫 글자는 대문자를 사용, 밑줄을 사용하여 단어를 구분하지 않는다. - PascalCasing : 파스칼 표기법 - camelCasing : 카멜 표기법 1) 매개 변수 이름을 제외한 모든 식별자에 사용하는 파스칼 표기법은 아래와 같이 각 단어의 첫 번째 글자를 대문자로 표기 - PropertyDescriptor, HtmlTag 아래와 같이 두 글자 머리글자어(two-letter acronyms)를 모두 대문자로 표기하기도 함. - IOStream 2) 매개 변수 이름에만 사용하는 카멜 표기법은 아래 예제와 같이 첫 단어를 제외한 각 단어의 첫 번째 글자를 대문자로 표기, 두 글자 머리글자어(two-letter..

개발/C# 2021.08.25

C# 기초 - 이벤트와 델리게이트 (Event & Delegate)

Delegates(델리게이트) - Delegate는 대리자라고도 하며, 메서드에 대한 참조를 갖는 형식이다. - 함수포인터나 콜백과 동일한 동작으로 delegate를 호출하면 참조하고 있는 메서드가 호출된다. - 참조하는 함수의 반환 형식 및 매개변수를 사용하여 선언한다. * 선언한 함수 형식이 일치하는 메서드에 대해서만 참조할 수 있다. 아래와 같은 형식으로 선언하여 사용 public delegate [반환형식] [이름] (매개변수) [예제] public delegate void ThresholdReachedEventHandler(object sender, ThresholdReachedEventArgs e); -> 반환형이 void, 매개변수는 object, ThresholdReachesEventArg..

개발/C# 2021.08.24

도둑맞은 가난 - 박완서

아흔아홉 냥 가진 놈이 한 냥을 탐내는 성미를 알고 있는 터였다. 그러나 부자들이 가난을 탐내리라고는 꿈에도 못 생각해 본 일이었다. 그들의 빛나는 학력, 경력만 갖고는 성이 안 차 가난까지를 훔쳐다가 그들의 다채로운 삶을 한층 다채롭게 할 에피소드로 삼고 싶어 한다는 건 미처 몰랐다. 나는 우리가 부자한테 모든 것을 빼앗겼을 때도 느껴보지 못한 깜깜한 절망을 가난을 도둑맞고 나서 비로소 느꼈다. 나는 쓰레기더미에 쓰레기를 더하듯이 내 방 속에, 무의미한 황폐의 한가운데 몸을 던지고 뼈가 저린 추위에 온몸을 내맡겼다. - 도둑맞은 가난

취미/책 2021.08.21

대구 2박 3일 여행

올해는 1월부터 회사일에 개인적인 일까지 해서 정신도 없고 너무 바쁘게만 시간이 가고 있다. 제대로 된 휴가도 없이 8월까지 버티면서 보내다가, 바빴던 업무 하나 끝나고 길게 휴가를 냈다. 사실 지금 너무 지쳐있어서 집에서 그냥 쉬고 싶단 생각이 반, 어디든 놀러갈까 생각하다가도 요즘 시기에 여행을 가는게 맞나 싶은 생각이 들기도 했다. 그래서 대구로 가기 결정한 당일까지도 고민만 하다가 그래도 길게 휴가 냈는데 어디라도 가야겠단 생각으로 급 대구행 결정, 금요일 저녁 대구로 이동했다. 길게 휴가를 냈지만 대구에서는 짧게 2박 3일정도만 보내다가 왔다. 가기전까지도 조금은 귀찮은 마음도 있었는데, 막상 대구행 기차에 타고 대구에 도착하니 이것저것 하고 싶은 것도 많이 생기고, 먹고 싶은 것도 많고 여행이..

취미/여행 2021.08.17
반응형