Note de lecture : Applied C++, par Philip Romanik & Amy Muntz

Note: 4 ; Tutorial pour C++

A l’origine, j’avais classé cet ouvrage dans la partie « C++ avancé », à l’image de la plupart des ouvrages de cette série. Toutefois, au final cet ouvrage s’adresse d’avantage aux développeurs peu expérimentés, ce qui justifie ce classement.

Le livre compte un peu plus de 300 pages et presque 20 pour les annexes. Il n’est découpé qu’en 8 chapitres. Passons rapidement sur l’introduction de 7 pages nous dispensant quelques rudiments de traitement d’image et de principes de conception de système. Le second chapitre est à peine plus long avec 11 pages. Mais on commence à écrire quelques classes simples et à aborder les conseils proposés par les auteurs, essentiellement concernant les questions de constructeur, destructeur et opérateur d’affectation.

Les choses sérieuses commencent au chapitre 3 qui comprend 48 pages. On commence par une idée curieuse : réécrire l’allocation mémoire ! Rapidement, on y mélange beaucoup d’aspects : les templates, les destructeurs virtuels, etc… Difficile de s’y retrouver. On finit même par perdre de vue l’étude de cas !

Le chapitre 4 est long de 45 pages. On commence par y parler convention de style (nommage, indentation, etc…) pour ensuite parler réutilisation. Car on va réimplémenter des classes telles que std ::string, eh oui ! Tout le propos sur le support de debuggage a le mérite d’être original et intéressant. Même si aujourd’hui on s’appuie d’avantage sur les tests unitaires.

55 pages sont consacrées aux considérations système au chapitre 5. La façon dont les sujets sont abordés me laisse dubitatif : est-on en train de construire un framework système, là où la librairie standard ou ACE font un excellent travail ? Par exemple, les auteurs s’efforcent de reconstruire une classe thread en s’appuyant sur Posix, sur Unix et Windows. Non seulement ACE fait déjà cela, mais cette approche n’est pas la bonne sous Windows ! De même les auteurs nous invitent-ils à avoir notre propre classe de base apException ou notre propre gestion de l’internationalisation, là où la librairie standard a ce qu’il faut ! Troublant…

Avec 75 pages, le chapitre 6 « implémentation considérations » est le plus volumineux du livre ! Au moins a-t-il du sens, car les auteurs y développent un framework de gestion d’image. Si le propos est abondamment illustré, le fil un peu décousu ne facilite pas le suivi de celui-ci.

La chapitre 7 aborde les tests de performance. Mais disons le tout net : en 20 pages, on est surtout frustré par l’aspect superficiel du propos. Les auteurs en profitent pour nous présenter leur framework de tests unitaires. Aujourd’hui, cppUnit fait un meilleur travail.

Les sujets avancés traités en 35 pages dans le dernier chapitre vont un peu dans tous les sens : gestion mémoire, gestion du cache ou utilisation du mot clé « explicit »… Difficile de trouver un fil conducteur dans tout cela ! Et rien n’est vraiment traité de manière satisfaisante.

Il y a du bon et du moins bon dans ce livre.

Le bon, c’est que cet ouvrage décrit et adresse nombre de problématiques que l’on rencontre vraiment quand on développe du C++, plutôt que de s’appuyer simplement sur des cas d’école comme on le voit souvent. L’ensemble du livre s’appuie sur une véritable application, et son développement tire avantage des conseils dispensés par John Lakos dans son « Large scale C++ Design ».

Le moins bon, c’est nombre de conseils pour le moins curieux dispensés au long de l’ouvrage. On est même en droit parfois de se questionner sur le niveau de maîtrise du C++ des auteurs ! Pourquoi recommander l’usage des préfixes au lieu des namespaces ? Pourquoi s’évertuer d’utiliser un sous-ensemble de la STL et exhiber fièrement l’utilisation d’un conteneur inadapté ?

Ce livre est un « cas d’utilisation », mais l’étude de celui-ci occupe une place prépondérante dans le texte. Cela signifie que l’un des sujets principaux du livre est bel et bien le traitement d’images. Si ce n’est pas un sujet d’intérêt pour vous, vous risquez d’être carrément frustré ! Pour le moins, il faut bien savoir à quoi l’on a à faire.

Il n’en reste pas moins qu’un certain nombre d’idées et d’outils, pour les tests et les tests unitaires peuvent servir. Mais c’est quand même bien décevant…

image

Référence complète : Applied C++, Practical techniques for building better Software – Philip Romanik & Amy Muntz – Addison Wesley / C++ In depth series 2003 – ISBN: 0-321-10894-9

Publicité

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.