본문 바로가기

분류 전체보기

(918)
item 23, 클래스 내부 객체에 대한 reference 반환을 피하라. 포스트를 만든 목적 심심해서... 내용 C++을 보았다면, 클래스 내부 객체를 레퍼런스나 포인터로 뽑아 내는게 껄끄럽다는 건 알고 있을 것이다. 그러므로 이 껄끄러운 것을 시원하게 없애 줄 방법들 몇가지에 대해서 정리한다. 왜 껄끄러운가? .. 사생활에 간섭 받으면 껄끄러운 것과 같다. 어디에서든지 개입시킬 수 있는건 ... 어디에서든지 버그가 발생할 수 있다는 의미와 똑같기 때문이다. 어떻게 대처 해야 하는가? 밖으로 사생활을 보여주지 않으면 그만이지만, 살다보면 안 될 수도 있다. 그래서 대충 4가지 정도 내숭이 있다. value 타입을 이용하기 immutable 타입 사용하기 읽기용 interface 이용하기 읽기용 wapper 이용하기 결론 reference를 반환할 땐, 내숭을 부리자. 여담 ...
item 22, 이벤트를 이용하여 외부로 노출할 인터페이스를 정의하라. 포스트를 만든 목적 공부하려고!! 관련 링크 http://msdn.microsoft.com/ko-kr/library/8627sbea%28VS.80%29.aspx // 무엇이 이벤트 인가? http://www.gpgstudy.com/forum/viewtopic.php?t=18988 // Event, Delegate 차이점 http://blog.naver.com/silent1002/10086120655 // Event, Delegate 차이점 내용 delegate과 event는 사실 전혀 다른 것인데, 사용상 무척 혼동을 준다. delegate는 type 이고, event는 속성이다. 즉, int == delegate 이고 virtual == event 이다. event 는 delegate에 특정한 속성을 ..
item 21, delegate를 이용하여 콜백을 표현하라. 포스트를 만든 목적 내가 공부하려고 만들었다. 내가 라고 쓴 이유는 기본적으로 C/C++ 을 해보았다는 전제에서 썻기 때문이다. 관련 링크 http://msdn.microsoft.com/ko-kr/library/900fyy8e%28VS.80%29.aspx // MSDN delegate http://msdn.microsoft.com/en-us/library/ms173175%28VS.80%29.aspx // How to Combine Delegates (.. 한글 문서를 못찾겠음) 내용 무엇을 콜백 이라고 하는가? 콜백은 '나에게 보고 해라." 라는 개념이다. .. 백문이 불여일견, 예제로 보자. using System; using System.Collections; using System.Collectio..
item 20, interface의 구현과 virtual 메서드의 overriding을 구분하라. 포스트를 만든 목적 지하철에서 책 보다가 정리할 겸 만들었다. 내용 무엇이 헷갈리길래 구분하는 것인가? 서로 다른 타입이지만, 공통 분모 함수 선언을 갖을 수 있는 점 때문에 헷갈린다. 이러한 헷갈림은 interface 사용법과 virtual 메서드 사용법에 헷갈림을 준다. 다음 사용 예제를 보면, 헷갈릴 것이다. using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Data; using System.ComponentModel; namespace console { class ConsoleClass { pub..
item 19, 상속보다는 interface를 정의하고 구현하는 것이 좋다. 포스트를 만든 목적 지하철에서 책 본 것을 정리하려고 관린링크 http://debop.egloos.com/2298224 // 인터페이스에 대한 설명 및 설계 내용 상속은 무엇이고 interface는 무엇인가? http://msdn.microsoft.com/ko-kr/library/ms173149%28VS.80%29.aspx // C# 상속 http://msdn.microsoft.com/ko-kr/library/ms173156%28v=VS.80%29.aspx // C# 인터페이스 왜 상속보다 interface가 더 좋은가? 상속관계가 없는 서로 다른 타입도 사용 할 수 있다. // interface is better. public void PrintCollection(IEnumerable collectio..
SyntaxHighlighter 3.0.xx , lua brush shBrushLua.js 포스트를 만든 목적 SyntaxHighlighter 용, lua plug-in 공유하려고 만들었다. 내용 -- one line comments --[[ multi line comments ]] -- double quoted string str = "dddddd" -- single quoted string str = 'dddddddddddddd' -- multi line double quoted string str = "dddddddd \ ddddddddddddddd" -- multi line single quoted string str = 'dddddddd \ ddddddddddddddd' var = 3 print(var) 보면 아시겠지만, SyntaxHighlighter 3.0.83 버전이 나와서, 한..
item 18, 표준 Dispose 패턴을 구현하라. 포스트를 만든 목적 이렇게 하지 않으면, 책을 건성으로 본다. 내용 Dispose 는 무엇인가? 관리되지 않는(unmanaged) 자원을 해제하기 위해서 사용 하는 함수이다. 그러면 unmanaged 자원은 무엇인가? 쉽게 생각해서 "메모리가 아닌 자원" 즉, 윈도우 핸들, 파일 핸들, 소켓 핸들 등 시스템 자원을 뜻한다. 반대로 managed 는.. new List() 등, 메모리 처럼 쓰는 자원들이다.그러면 표준 Dispose 패턴은 무엇인가? Dispose를 IDisposable Interface로 구현한다. Dispose 내부에선 unmanaged 자원을 해제한다. 사용자가 Dispose를 사용하지 않았을 경우를 대비하여, finalizer를 구현한다. finalizer 에서 unmanaged 자..
item 17, boxing과 unboxing을 최소화하라 포스트를 만든 목적 이렇게 해야, 내가 책을 건성으로 보지 않는다. 개요 boxing, unboxing 이 언제 발생 되고, 어떻게 처리 되는지 알아야 한다. 내용 관련 링크 http://msdn.microsoft.com/ko-kr/library/yz2be5wk.aspx // boxing과 unboxing http://msdn.microsoft.com/ko-kr/library/ms173196.aspx // C# 성능 boxing 과 unboxing이란 무엇인가? C#에선 value 타입과 reference 타입이 존재한다. 이러한 두 타입간의 존재 때문에, reference 타입만을 요구하는 특정한 상황에선, 어쩔 수 없이, 변환 하는 과정이 필요하다. value 타입이 reference 타입으로 변환할..