Por que nem sempre usamos tipos genéricos em vez de nos preocuparmos em especificar sempre?
Esta é uma questão um pouco religiosa. O conflito é entre linguagens que conceitualmente associam tipos com variáveis contra aquelas que associam tipos com valores.
Algumas linguagens (famoso Lisp e Smalltalk, com muitas linguagens de script neste campo também) são desenhadas em torno da idéia de que variáveis não têm tipos - elas detêm valores, e somente esses valores têm tipos. Em algumas dessas linguagens (notavelmente Lisp comum), se você realmente precisa de performance, você pode anotar seu código para dizer ao compilador que tipos de valores você está esperando no seu código.
Outras linguagens requerem que as variáveis sejam digitadas. Mesmo "Tipos Genéricos" muitas vezes não são verdadeiramente genéricos, na medida em que implicitamente (e em alguns idiomas, explicitamente) requerem que certas operações sejam permitidas nos valores com os quais são chamados. Por exemplo, "find in list" requer que o tipo do item encontrado corresponda ao tipo de item na lista, e esse tipo precisa suportar testes de igualdade para ser válido.
Como Scott Berry disse, a estrutura do seu código's deve refletir sua intenção.
Se você estiver trabalhando em uma linguagem de "variável digitada" (e it's provavelmente você está), então você deve sempre especificar a restrição de tipo mais apertada que reflita o que o código faz, mas não mais apertada. Interfaces ou seus equivalentes são muito úteis se a sua linguagem não't permitir que você restrinja seus parâmetros genéricos.
Não só ajudará o compilador (o que é uma preocupação secundária - os compiladores são muito bons em trabalhar esse material hoje em dia), mas também ajudará você e futuros programadores a entender o uso pretendido do seu código. Se a sua função toma "Equatable, Comparable", então it's claramente não se preocupa com o que você're passando para dentro, apenas que ele pode ser ordenado.
Artigos semelhantes
- Por que todos os jogos de computador são lançados no Windows, mas nem sempre no Mac?
- Por que não usamos scanners de impressões digitais nos computadores para obter senhas?
- Por que usamos o VPN? O VPN é importante para nós?
- Porque é que usamos papel higiénico em vez de duches de água, especialmente no Oeste?