12.07.2013 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!