본문 바로가기

Develop/.NET 가이드

[C#] Delegates 대리자 Delegate (대리자)를 왜 사용해야 하는지, 그리고 어떤 상황에 사용되는지 살펴보자. 설계 목적 마이크로소프트 공식 문서에 따르면 Delegate (대리자) 기능은 아래와 같은 목적으로 설계되었습니다. Late Binding 동적 바인딩을 지원하는 언어 구문을 만들어, 개발자가 여러 다양한 소프트웨어 설계 문제에 동적 바인딩을 적용하여 해결할 수 있도록 설계 C 언어의 메서드 포인터와 같이, 메서드를 호출할 수 있는 방법이 필요해서 지정된 메서드를 호출할 수 있는 대리자 와 여러 메서드 호출을 연결할 수 있는 대리자를 프레임워크에 구현 C/C++ 언어와 달리 C# 언어는 모든 구문에서 Type-Safe(형식 안전성)를 지원하므로, 대리자도 Type-Safe(형식 안전성)를 지원 동적 바인딩 기능과 ..
[C#] 비동기 프로그래밍 비동기 프로그래밍 비동기 프로그래밍은 중앙처리장치(CPU)를 효율적으로 사용하기 위한 기술이다. 중앙처리장치는 매 초마다 정말 많은 작업을 요청받고 처리한다. 데이터를 읽거나 쓰거나, 네트워크 통신을 주거나 받거나, 화면 픽셀을 계산하거나 모두 중앙처리장치의 허가와 지도가 필요하다. 이렇게 바쁜 중앙처리장치에게 현재 입출력 작업이 완료되길 기다리게 하는건 정말 비효율적이다. 그래서 개발자는 중앙처리장치가 비효율적으로 낭비되지 않도록 비동기 프로그래밍 기술을 사용하여, 중앙처리장치가 입출력을 기다리는 대신 다른 업무를 처리하도록 하고 입출력이 완료되었다는 메세지를 받은 뒤에 기존 작업을 다시 시작하도록 프로그래밍한다. 등장 배경 기본적으로 프로그램은 코드 순서에 따라 순차적으로 실행된다. 그래서 코드 중간..
[C#] 코드 문서화 코드 문서화는 필요할 수도 있고, 아닐 수도 있다. 코드가 어떻게 작동하는지 그리고 코드를 어떻게 활용하는지 파악해야 할 때, 코드 문서는 유용하다. 코드 문서가 있으면 동료 개발자의 업무를 방해하지 않으면서, 코드를 이해할 수 있다. 즉 코드 문서는 코드와 작성자 간의 결합도를 줄여준다. 하지만 코드 문서는 생산성을 저하시키는 행정 업무로 변질되기 쉽상이다. 코드가 변경되면 문서를 같이 업데이트해야 한다. 즉 코드와 문서가 서로 결합된다. 코드 문서화는 생산성 증가를 보장하지 않는다. 따라서 문서화를 진행하기 전에 과연 코드를 문서화하는 작업이 생산성을 증가시킬 수 있는지 충분한 검토가 필요하다. 왜냐하면 코드 문서로 업무를 올바르고 정확하게 하는 것도 중요하지만, 업무를 기한 안에 적은 노력으로 완료..