이 포스트를 만든 목적
- 공부 하려고
이 포스트의 준비물
- gVim 7.2
- SyntaxHighlight
- Microsoft Visual C# 2010 Express
참조 서적
- Effective C#
내용
작고 응집도가 높은 어셈블리란 무엇을 말하는 것인가?
쉽게 생각해서, DLL이 작고, 필요한 것들만 모아둔 어셈블리를 뜻한다.
작고 응집도가 높은 어셈블리가 왜 더 좋은가?
- 어셈블리 최초 로드가 보다 더 빨라지기 때문에
- 프로그램이 실행 될 때, 모든 어셈블리를 로드하지 않고, 필요한 것만 로드를 한다. 그러다 필요한 어셈브리를 로드 할 때 로드를 한다. 만약 필요한 어셈블리의 단위가 잘 정리되어 있어, 그 크기가 적절하다면, 어셈블리 로드의 시간을 줄여 더 빨라진다는 이야기이다.
- 변경 된 어셈블리를 배포하기 더 쉽고 빠르기 때문에
- 만약 어셈블리의 1개의 용량이 2MB 라고 할 경우, 몇 라인을 수정하더라도, 2MB 모두 배포해야 된다. 하지만 보다 적절하게 어셈블리 단위를 독립시켜 놓는다면, 2MB 가 500KB 로 작아 질 수도 있다. 또한 독립되어 있는 어셈블리이기 때문에, 보다 저 수정이 쉽다.
주의 해야 할 점이 있는가?
작다고 해서 무조건 좋은 것만은 아니다. 예를 들어 클래스 단위로 어셈블리를 만드는 것은 수정하는 사람이나, 배포하는 사람이나 읽어야 하는 컴퓨터나 모두다 자원을 소비하는 꼴이다. 그러므로 독립성과 연관성을 잘 대조(이게 핵심인데 책에는 내용이 없다.)해서, 적절한 크기로 어셈블리를 만들어야 한다.
여담
- 이런 말이 있다. "프로그래밍은 분해와 결합의 연속이다." 나는 이 말에 크게 공감한다.
- 어떤 책인지 기억은 나지 않아 출처를 밝힐 수 없다.
- 이번 항목은 그냥 일반적인 이야기일 뿐이다. 우리는 이러한 일반적인 이야기를 통해서, 더 좋은 방법을 찾는 일을 해야 한다. ;(
- 책을 읽으면서 오캄의 면도날이 생각났다.
'책 정리 > Effective C#' 카테고리의 다른 글
item 37, 표준 환경설정 메커니즘을 이용하라 (0) | 2010.08.03 |
---|---|
item 36, 닷넷 런타임의 진단기능을 활용하라 (0) | 2010.08.01 |
item 35, 이벤트 핸들러보다 override를 사용하는 편이 낫다. (0) | 2010.08.01 |
item 34, 웹 API는 큰 단위로 작성하라 (0) | 2010.08.01 |
item 33, 타입의 가시성을 제한하라. (0) | 2010.08.01 |
item 31, 작고 단순한 메서드가 더 좋다. (0) | 2010.07.25 |
item 30, CLS를 준수하는 어셈블리가 더 좋다. (0) | 2010.07.25 |
item 29. 기반 클래스의 변경이 영향을 줄 경우에만 new 한정자를 사용하라. (0) | 2010.07.22 |
item 28, 형변환 연산자의 구현을 피하라 (0) | 2010.07.21 |
item 27, ICloneable의 구현을 피하라 (4) | 2010.07.20 |
최근댓글