ITEM 25 :: EFFECTIVE C#
안녕하세요, 25번째 시간입니다.
이번 챕터는 타입 매개변수로 인스턴스 필드를 만들 필요가 없다면 제네릭 메서드를 정의하라, 입니다. 역시 이번 내용도 짧습니다. 하지만, 제네릭화를 시키는데에 있어서 신경써야 할 점에 대해 알려주는 내용입니다. 이 역시 아직 제네릭을 사용하지 않는 관계로 내용이 짧은 점 양해 부탁드립니다.
설명
1. 유틸리티 성격의 클래스를 만드는 경우에는 무작정 제네릭 클래스로 만드는 것보다 일반 클래스 내에 제네릭 메서드를 작성하는 편이 훨씬 좋다. 제네릭 클래스를 작성하면 컴파일러의 입장에서는 전체 클래스에 대하여 타입 매개변수에 대한 제약 조건을 고려하여 컴파일을 해야하기 때문이다.
2. 정리하자면, 일반 클래스 내에 제네릭 메서드를 만들어서 타입별로 메서드가 특화되도록 코드를 작성하는 것이다. 일반 클래스 내에 제네릭 메서드가 포함된 형태 이므로 타입 매개변수를 메서드별로 구성할 수 있고, 동일한 메서드에 대해서 다른 타입을 사용하더라도 제네릭 클래스처럼 추가적으로 객체를 생성할 필요가 없다.
3. 다음으로 제네릭 메서드를 사용하는 것이 무조건 장점만 있는 것은 아니다. 몇 가지 기준이 필요한데, 다음의 두 가지 경우에는 반드시 제네릭 클래스를 만들어야 한다. 첫째로 클래스 내에 타입 매개변수로 주어진 타입으로 내부 상태를 유지해야 하는 경우다.(컬렉션이 이 경우에 해당함) 둘째로 제네릭 인터페이스를 구현하는 클래스를 만들어야 하는 경우다. 이 두가지를 제외하고는 일반클래스 내에 제네릭 메서드를 포함시키는 편이 좋다.