문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 일반화 (문단 편집) == [[프로그래밍]]에서 == [[C++]]에서는 템플릿(Template), [[C##]]이나 [[Java]]에서는 '제너릭(generics)'으로 불리는 기능을 통하는 일반화 프로그래밍(Generic Programming)이 있다. 함수나 클래스 등을 구상할 때, 동작하는 논리는 같으나 매개변수로 입력되는 데이터의 형식만 다르게 똑같은 코드를 다시 만들어야 되는 상황이 발생하는데, 이때 일일이 오버로딩을 통해 각각의 데이터 형식에 따라 구현하는 번거로운 방법 말고 이들을 하나의 형식으로 일반화해 코드를 간결하게 유지할 수 있다. [[C##]]을 예로 들어 구현하면 {{{#!syntax csharp using System; namespace TestCopy { class Test { public void Copy(int a, out int b) { b = a; } public void Copy(string a, out string b) { b = a; } public void Copy(float a, out float b) { b = a; } } } }}} 이렇게 논리가 똑같고 매개변수 형식만 다른, 사실상은 똑같은 메소드를 3개씩 일일이 구현하는 상황이 발생한다. 3개이면 어찌어찌 구현하겠지만, 30개가 필요한 상황이면 코드 길이가 기하급수적으로 늘어나니 프로그래머가 정말로 싫어할 문제가 생긴다. 이러면 코드를 쓰는 시간이 늘어나는 감과 동시에 관리도 어려워져 디버깅 작업을 하는 데 애로사항이 생길 수 있다. {{{#!syntax csharp using System; namespace TestCopy { class Test { public void Copy(T a, out T b) { b = a; } } } }}} 그러나 이렇게 int, string, float 3개의 서로 다른 데이터 형식을 T 하나로 일반화하면 코드를 매우 간결하게 만들 수 있다. 이는 데이터 형식이 3개 말고 300개, 3,000개도 아무런 수정 없이 정상적으로 작동하며 형식 변환에서 일어나는 성능 저하도 발생하지 않는다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기