여전히 "일반 코딩"에서 jave 제네릭을 사용 하지 않는 사람들이 여전히 있습니다 . C ++ 템플릿을 사용하여 믿을 수 있지만 제네릭? 배우거나 사용하기도 어렵지 않습니다. Java 및 C ++의 가장 좋은 기능은 각각 제네릭과 템플릿입니다.
사람들에게 물건을 설득하는 가장 좋은 방법은 설득력있는 주장을하고 위협하지 않고 옳은 것입니다.
프로그래밍 언어로 템플릿을 사용하는 것과 같은 일을하지 않는 한 파라 메트릭 다형성 (일반 / 템플릿)이 거의 확실합니다.
1. 코드 중복을 피하십시오.
이것은 명백하지만 다형성 코드는 일반적인 코드입니다. 그것이 제네릭이라고 불리는 이유입니다.
더 나은 정적 검사를 지원합니다.
파라 메트릭 다형성이 없다면 당신은 같은 것을 쓰고 결국 public Object clone()
또는 public boolean equals(object b)
단지 가증되지 않는, 그들이하는 일에 대한 정보를 제공하지 유형이 있고, 변함없이 사방에 예외를 던져 결국. 파라 메트릭 다형성의 대안은 모든 곳에서 사용됩니다
3. 비모수 적 다형성 OOP 코드는 기본적으로 "이진 방법"을 올바른 방식으로 처리 할 수 없습니다.
당신은 이것을 자주 사용합니다.
4. 모범 사례입니다
Java에서는 제네릭 사용이 모범 사례로 간주됩니다 (Josh Bloch의 Effective Java 참조). Sutter와 Alexandrescu와 같은 주요 C ++ 사상가들은 템플릿을 사용하여 다양한 문제를 해결하도록 권장합니다.
5. OO 패러다임에 맞습니다.
사람들은 종종 이것을 알지 못하지만 하위 유형과 제네릭의 조합은 시스템 중 하나만있는 시스템보다 훨씬 강력하고 표현적인 시스템을 만들어냅니다.
스칼라의 믹스 인을 고려하십시오. 이것들은 구성 요소 부분에서 객체를 하나로 묶을 수있는 좋은 기능입니다. 제네릭과 템플릿은 이러한 이점 중 일부를 시뮬레이션 할 수 있습니다. 예를 들어 객체 중 하나가 데이터베이스를 사용한다고 가정합니다. 좋은 디자인은 데이터베이스 액세스를 별도의 클래스로 추상화해야합니다. 올바르게 수행하면 데이터 저장소를 모의 할 수있을뿐만 아니라 (테스트의 핵심) 새로운 SQL 데이터베이스와 같은 대체 구현을 추가 할 수도 있습니다. 그러나 사용하는 구현에 관계없이 비즈니스 오브젝트의 다른 기능을 사용하게되면 문제점이있을 수 있습니다.
구조의 제네릭!
public class Business<S extends Datastore>{
private S store; ...
}
이제 Business
데이터베이스 별 기능을 사용하는 능력에 따라 객체를 정적으로 차별화 할 수 있습니다. 여전히 런타임 검사와 캐스팅이 필요하지만 더 나은 코드를 만들기 시작할 수 있습니다.
과
6. 일반 코드가 존재하지 않습니다.
프로그래밍 유니버스에는 세 가지만 있습니다.
- 도서관
- 구성 및
- 나쁜 코드.
코드를 라이브러리처럼 생각하지 않으면 프로젝트 요구 사항이 변경 될 때 심각한 문제가 발생합니다. 아키텍처는 (아마도) 좋은 API를 디자인하는 기술입니다.
나는이 태도가 놀랍습니다. 매개 변수화 된 유형으로 프로그래밍하는 데 익숙해지면이를 사용하지 않으면 모든 것이 고통스러워집니다. 그리고 Java와 C ++에는 해결에 도움이되는 거친 지점이 많이 있습니다.