Etude exploratoire de Linq - CoDE - de l'Université libre de Bruxelles
Etude exploratoire de Linq - CoDE - de l'Université libre de Bruxelles
Etude exploratoire de Linq - CoDE - de l'Université libre de Bruxelles
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Chapitre 6 : En pratique<br />
6.1 Ressenti général<br />
Après ce vaste tour d’horizon <strong>de</strong> <strong>Linq</strong>, il est temps <strong>de</strong> prendre un peu <strong>de</strong> recul et <strong>de</strong> faire le point sur<br />
ce que nous pouvons en retirer. Qu’a apporté cette étu<strong>de</strong> ? Voila une question qu’il est bon <strong>de</strong> se<br />
poser. La découverte <strong>de</strong> <strong>Linq</strong> s’est faite <strong>de</strong>puis les bases, tout comme ce fut relaté dans ce rapport.<br />
Nous avons introduit un ensemble <strong>de</strong> mécanismes fondateurs avant <strong>de</strong> décortiquer les différentes<br />
implémentations proposées par <strong>Linq</strong>. L’exploration <strong>de</strong> ces diverses implémentations et la mise en<br />
œuvre <strong>de</strong> cas concrets se sont avérés parfois surprenants, révélant <strong>de</strong>s comportements inattendus<br />
(cf tests <strong>de</strong> performance pour <strong>Linq</strong> to Sql) ou au contraire <strong>de</strong>s avantages conséquents (comme pour<br />
l’exemple <strong>de</strong> l’implémentation objet). La métho<strong>de</strong> appliquée tout au long <strong>de</strong> cette étu<strong>de</strong> a été <strong>de</strong><br />
partir <strong>de</strong>s bases théoriques en allant progressivement vers <strong>de</strong>s considérations <strong>de</strong> plus en plus en<br />
phase avec la réalité concrète. Bien qu’il soit tentant d’explorer encore et encore certaines options,<br />
nous nous sommes efforcés <strong>de</strong> nous en tenir au sujet initial qui ne concerne que <strong>Linq</strong>. Des ouvertures<br />
vers <strong>de</strong>s technologies passionnantes comme l’Entity Framework ont été tentées mais les essais et<br />
explications sont restés centrés sur <strong>Linq</strong>.<br />
La plus gran<strong>de</strong> difficulté rencontrée durant cette étu<strong>de</strong> concerne la disponibilité <strong>de</strong> la<br />
documentation. En effet, <strong>Linq</strong> était partie intégrante d’une solution propriétaire, une très large<br />
majorité <strong>de</strong>s informations techniques est concentrée sur le site officiel <strong>de</strong> Microsoft ou dans <strong>de</strong>s<br />
livres édités par Microsoft Press. Certains sujets sont encore mal documentés du fait <strong>de</strong> leur jeunesse<br />
et <strong>de</strong> leurs rapi<strong>de</strong>s mutations. Un <strong>de</strong>s problèmes rencontrés à ce sujet fut d’avoir accès à <strong>de</strong>s<br />
explications tronquées, certaines parties étant apparemment considérées comme triviales. Lorsque<br />
ce n’est pas l’avis du lecteur, c’est rapi<strong>de</strong>ment problématique pour ce <strong>de</strong>rnier. De même, certains<br />
sujets très récents comme l’Entity Framework ne proposent que <strong>de</strong>s informations fragmentaires et<br />
parfois contradictoires, le plus souvent à cause <strong>de</strong> changements survenus durant la version beta non<br />
répercutés dans la documentation. Heureusement la communauté qui soutient le développement<br />
.NET est nombreuse et les accès en avant-première à certaines technologies encore en<br />
développement permettent à certains spécialistes <strong>de</strong> rédiger <strong>de</strong>s explications complémentaires<br />
souvent utiles (il s’agit <strong>de</strong>s sources *13+ et *6+ principalement). Ce passage est également l’occasion<br />
<strong>de</strong> remercier tous ces contributeurs pour leur travail et leur dévouement. Proposant généralement<br />
<strong>de</strong>s informations dispersées sur <strong>de</strong>s blogs ou <strong>de</strong>s forums communautaires, ils sont parfois auteurs<br />
d’une simple phrase permettant le déclic. Leurs interventions sont aussi l’occasion d’offrir un point<br />
<strong>de</strong> vue différent <strong>de</strong> l’omniprésent Microsoft. Dans la documentation officielle, tout semble toujours<br />
simple et harmonieux. Plusieurs retours d’expérience ont également permis d’adopter une vision<br />
plus objective sur l’ensemble <strong>de</strong>s sujets abordés.<br />
6.2 Points forts, points faibles<br />
La première remarque qui s’impose après ce que nous avons vu, c’est <strong>de</strong> se dire que <strong>Linq</strong> permet<br />
d’écrire du co<strong>de</strong> beaucoup plus simplement. Les requêtes y sont écrites dans un langage plus proche<br />
du langage naturel et les erreurs sont détectées à la compilation. Durant les différents tests réalisés<br />
préalablement à l’écriture <strong>de</strong> ce rapport, le temps nécessaire à l’écriture <strong>de</strong> requêtes Sql a été<br />
constaté comme étant entre <strong>de</strong>ux et trois fois supérieur au temps requis pour produire <strong>de</strong>s requêtes<br />
<strong>Linq</strong> équivalentes (est compris dans ces mesures le temps consacré à l’écriture <strong>de</strong>s requêtes et à leur<br />
débogage). En termes <strong>de</strong> productivité, <strong>Linq</strong> constitue déjà une avancée majeure. Au-<strong>de</strong>là <strong>de</strong> ce gain<br />
<strong>de</strong> performances humaines, <strong>Linq</strong> améliore la maintenabilité d’un co<strong>de</strong> car il est plus lisible d’une part