하스켈 및 기타 기능 언어에서 놀아 보면서 몇 가지 문제를 일반적인 용어로 설명함으로써 설계의 단순함을 알게되었습니다. 템플릿 프로그래밍의 많은 측면이 단순하지는 않지만, 일부 용도는 일반적으로 충분히 명확하므로 명확성 (특히 함수 템플릿)을 저해한다고 생각하지 않습니다. 필자는 템플릿이 현재 디자인을 간소화 할 수 있으며 동시에 미래의 약간의 저항을 자동으로 추가 할 수 있다고 생각합니다. 왜 그들의 기능을 도서관 작가에게 맡겨야합니까?지나친 일반화 란 무엇이라고 생각합니까?
한편, 일부 사람들은 전염병과 같은 템플릿을 피하는 것 같습니다. 제네릭 형식의 개념이 프로그래밍 공동체의 많은 부분에 국한된 10 년 전 저는 이것을 이해할 수있었습니다. 그러나 이제는 모든 정적 유형의 OO 언어가 하나의 형식 또는 다른 유형의 제네릭을 지원합니다. 추가 된 친밀감은 보수적 인 태도의 조정을 보증하는 것으로 보인다.
하나 개는 이러한 보수적 인 태도는 최근 나에게 표현되었다 :
당신은 필요한 것보다 더 일반적인 아무것도하지 않습니다 안 - 소프트웨어 개발의 기본 규칙을.
나는 이것이 솔직하게 말해야하는 것처럼 너무 경멸 스럽다는 것을 알기에 꽤 솔직히 놀랐다. 개인적으로 나는 하스켈과 같은 다른 언어를 사용하는 경우, 당신이 달리 지정하지 않는 한 모든 것이 일반적이라는 것을 자명 한 것으로부터 멀리 발견합니다. 즉, 나는이 관점이 어디서 비롯되는지 이해하고 있다고 생각합니다.
내 마음의 뒤에서, 나는 그 규칙이 어지러운 것처럼 느껴진다. 이제 그것이 최전선에 서서, 나는 전반적인 아키텍처에 비추어 항상 해석해 왔음을 알게됩니다. 예를 들어 클래스가있는 경우 언젠가 사용할 수있는 수많은 기능을로드하지 않으려 고합니다. 하나의 구체적인 버전 만 필요하다면 인터페이스를 만들지 않아도된다. (mockability가이 버전의 반론일지도 모르지만). 그런 것들 ...
그러나 내가하지 않는 것은 마이크로 레벨에서이 원리를 적용하는 것입니다. 특정 유틸리티 유형에 의존 할 이유가없는 작은 유틸리티 함수가있는 경우 템플릿을 만듭니다.
그래서 어떻게 생각하십니까? 지나친 일반화라고 생각하는 것은 무엇입니까? 이 규칙은 상황에 따라 적용 가능성이 다릅니 까? 이것이 규칙이라고 동의하는 것입니까?
생활 코드를 만드시겠습니까? 하스켈 기반 웹 서버는 어떻게 작동합니까? 기억해 : "똑똑하고 잘 했어." http://www.joelonsoftware.com/items/2007/06/05.html –
@James McNellis : 감사합니다. 나는 손가락을 가르키고 싶지 않거나 나는 단지 오래된 주장을 파헤 치려고하는 것처럼 보였다. 나는 진정으로 호기심이 많다. – Cogwheel
여기 거래가 있습니다 - 당신은 대학생이 아닙니다. 진정한 필요성이 생길 때마다 특정 기능을 일반적인 기능으로 전환 할 수 있다고 믿습니다. 이제, 당신은 $ 50/hr 정도를 지불하는 일을하는 바쁜 성인입니다. 필요한 때에 만 일반화하는 것이 합리적이지 않습니까? 시간은 돈이다. –