avril
2009
Un des développeurs de l’équipe de Mono vient de mettre en ligne sur son blog un excellent post traitant des dangers de la variance qui va être introduit dans C# 4.0.
Rappelons rapidement ce qu’est la variance. La variance est une notion liée à l’utilisation des generics. Elle permet d’écrire ce genre de chose :
{ //… }
{
Foo(maCollectionDeString);
}
Aujourd’hui avec C# 3.5 (raccourcis rapide sur les numéros de version, je sais ) cela n’est pas possible. Le compilateur sortira en erreur en expliquant que maCollectionDeString n’est pas du type attendu IEnumerable(Of object). Pourtant en toute logique on peux écrire cela :
string s = « toto »;
object o = s;
Il serait donc logique de pouvoir écrire le code précédent. La variance sur les generics amène cette possibilité.
Au premier abord c’est donc une excellente « feature » qui va simplifier pas mal de code.
Mais c’est aussi une source de problème et de danger qui sont pointés et bien expliqué dans le post.
Je vous livre ici l’url, attention c’est du bon, du haut niveau et il faut s’accrocher à ses brettelles
1 Commentaire + Ajouter un commentaire
Archives
- juillet 2012
- mars 2012
- février 2012
- novembre 2011
- octobre 2011
- mars 2011
- novembre 2010
- octobre 2010
- septembre 2010
- août 2010
- avril 2010
- février 2010
- janvier 2010
- novembre 2009
- octobre 2009
- septembre 2009
- juin 2009
- mai 2009
- avril 2009
- mars 2009
- février 2009
- janvier 2009
- décembre 2008
- novembre 2008
- octobre 2008
- septembre 2008
- août 2008
- juin 2008
- mai 2008
- avril 2008
- février 2008
- mai 2007
- avril 2007
- mars 2007
- février 2007
- janvier 2007
À mon humble avis make ambiguities illegal est la seule approche tenable sur le long terme.
La résolution des ambiguités par des règles d’arbitrage conduit invariablement à la découverte de nouvelles ambiguités toujours plus coriaces à lever.
Le langage devient difficile à documenter, difficile à implémenter et difficile à maitriser sans aucune autre contrepartie qu’une tranquilité à court terme, qu’on a gagnée en intégrant (dans le langage) des règles de magie noire qui ne sont destinées qu’à perenniser du code ambigu au lieu d’en assurer la maintenance.