2009-10-25

463. C++ coding standards, de Herb Sutter i Andrei Alexandrescu

C++ coding standards
Herb Sutter i Andrei Alexandrescu, 2005
Anglès
Ed. Addison-Wesley
220 p.
ISBN 0-321-11358-6

Herb Sutter i Andrei Alexandrescu són dos reconeguts gurús de la programació en C++ que en aquest llibre han ajuntat esforços i experiència per a mostrar-nos 101 regles, guies i bones pràctiques de la programació en C++.

De les herències de classes a les plantilles, del C més bàsic a la programació genèrica, dels tipus predefinits a la biblioteca STL, els autors passen per tots els àmbits importants del C++ sense descuidar-se'n cap: assignació de memòria, ús d'operadors, errors i excepcions, canvis de tipus, creació d'interfícies...

Els autors usen un mètodes senzill i pràctic per a transmetre la informació: presenten cent un casos (que poden ser regles, guies o consells), amb una bona argumentació i sovint amb exemples. Els casos presentats estan agrupats segons l'àmbit de la programació que afecten i es mira que facin referència a un sol tema, per evitar complicacions.

Aquest llibre és una molt bona introducció a la bona programació en C++, tot i que potser sigui un pèl massa per als principiants. Naturalment, un expert en C++ ja hauria de conèxier tots els temes tractats en aquest llibre... però sovint ens trobem amb sorpreses.

Us poso una mostra dels títols de les recomanacions del llibre:

  • 5. Give one entity one cohesive responsibility.
  • 15. Use const proactively.
  • 25. Take parameters appropriately by value, (smart) pointer, or reference.
  • 35. Avoid inheriting from classes that were not designed to be base classes.
  • 45. Always provide new and delete together.
  • 55. Prefer the canonical form of assignment.
  • 65. Customize intentionally and explicitly.
  • 75. Avoid exception specifications.
  • 85. Use the right STL search algorithm.
  • 95. Don't use C-style casts.

La meva valoració: un bon llibre per a començar a programar bé en C++ i també de cara als professionals, per a repassar cada pocs anys.