IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

More Exceptional C++

Date de publication : 11/05/2006 , Date de mise à jour : 27/03/2008

Par Matthieu Brucher (http://matthieu-brucher.developpez.com/) (Blog)
 

Critique de More Exceptional C++ d'Herb Sutter

I. Description
II. Table des matières
III. Critique : Moins indispensable que le précédent
IV. Liens annexes


I. Description

40 questions pour la suite de Exceptional C++ , toujours d' Herb Sutter . Les solutions apportées sont aussi variées et importantes comme :

  • Quels sont les dangers de l'utilisation des std::set ou stp::map et comment les éviter ?
  • Quelles sont les fonctions dépréciées utilisables avec la STL et celles non utilisables ?
  • Quelles sont les techniques disponibles pour générer du code templatisé puissant dont le comportement peut être modifié par le type de données utilisé ?
  • Quand et comment optimiser son code ? Quels sont les optimisations pouvant causer des problèmes, surtout en environnement multi-threadé ?
  • Comment la gestion des exceptions affecte-elle le design des classes ?
  • Comment gérer les problèmes d'héritage avec des bibliothèques de concepteurs différents - problème des soeurs siamoises - ?
  • Comment utiliser les std::auto_ptr de manière sûre et comment l'adapter avec des patterns simples pour éviter les écueils courants ? Est-il utilisable en tant que membre de classe ? A quel prix ?
  • Quelques questions courantes en C++ comme l'utilisation des namespaces : comment et pourquoi ?

II. Table des matières

  • Generic Programming and the C++ Standard Library.
    • Item 1: Switching Streams
    • Item 2: Predicates, Part 1: What remove() Removes
    • Item 3: Predicates, Part 2: Matters of State
    • Item 4: Extensible Templates: Via Inheritance or Traits?
    • Item 5: Typename
    • Item 6: Containers, Pointers, and Containers That Aren't
    • Item 7: Using Vector and Deque
    • Item 8: Using Set and Map
    • Item 9: Equivalent Code?
    • Item 10: Template Specialization and Overloading
    • Item 11: Mastermind
  • Optimization and Performance.
    • Item 12: Inline
    • Item 13: Lazy Optimization, Part 1: A Plain Old String
    • Item 14: Lazy Optimization, Part 2: Introducing Laziness
    • Item 15: Lazy Optimization, Part 3: Iterators and References
    • Item 16: Lazy Optimization, Part 4: Multi-Threaded Environments
  • Exception Safety Issues and Techniques.
    • Item 17: Constructor Failures, Part 1: Object Lifetimes
    • Item 18: Constructor Failures, Part 2: Absorption?
    • Item 19: Uncaught Exceptions
    • Item 20: An Unmanaged Pointer Problem, Part 1: Parameter Evaluation
    • Item 21: An Unmanaged Pointer Problem, Part 2: What About auto_ptr?
    • Item 22: Exception-Safe Class Design, Part 1: Copy Assignment
    • Item 23: Exception-Safe Class Design, Part 2: Inheritance
  • Inheritance and Polymorphism.
    • Item 24: Why Multiple Inheritance?
    • Item 25: Emulating Multiple Inheritance
    • Item 26: Multiple Inheritance and the Siamese Twin Problem
    • Item 27: (Im)pure Virtual Functions
    • Item 28: Controlled Polymorphism
  • Memory and Resource Management.
    • Item 29: Using auto_ptr
    • Item 30: Smart Pointer Members, Part 1: A Problem with auto_ptr
    • Item 31: Smart Pointer Members, Part 2: Toward a ValuePtr
  • Free Functions and Macros.
    • Item 32: Recursive Declarations
    • Item 33: Simulating Nested Functions
    • Item 34: Preprocessor Macros
    • Item 35: #Definition
  • Miscellaneous Topics.
    • Item 36: Initialization
    • Item 37: Forward Declarations
    • Item 38: Typedef
    • Item 39: Namespaces, Part 1: Using-Declarations and Using-Directives
    • Item 40: Namespaces, Part 2: Migrating to Namespaces
  • Appendixes
    • Appendix A. Optimizations That Aren't (In a Multithreaded World).
    • Appendix B. Test Results for Single- versus Multi-Thread-Safe String Implementations.

III. Critique : Moins indispensable que le précédent

Moins cohérent que le premier Exceptional C++, ce deuxième opus répond à des questions plus précises. Le seul bloc de questions comparable au premier livre concerne le paradigme COW pour Copy-On-Write, utilisé souvent pour la gestion des strings à moindre coût d'allocation. Plusieurs implémentations des std::string utilisent ce paradigme, et des bibliothèques commerciales l'utilisent, comme Qt4. En revanche, les autres questions sont plus décousues.

Les réponses n'en sont pas moins pertinentes. La gestion de la mémoire dans les conteneurs peut être surprenante et les exceptions sont de retour. Le fait qu'il y ait moins de suite dans les questions les rend plus applicatives et moins génériques. Enfin, chaque question peut être utilisée telle quelle quand les questions en bloc nous entraînent dans la réflexion de plus en plus loin. C'est donc plus théorique que pratique ; ce n'est pas moins intéressant, c'est différent. Un très bon livre tout de même.


IV. Liens annexes

info Critique sur la page de livres Jeux
info Achat sur Amazon.fr
info Lien vers le site de l'éditeur


Valid XHTML 1.1!Valid CSS!

Copyright © 2006 Matthieu Brucher. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.