2010-11-30 9 views
11

Hace poco me obligué a estudiar C++ y acabo de leer el libro C++: The Complete Reference, de Herbert Schildt. Me gustó el libro y creo que obtuve más o menos el panorama completo. Sin embargo, me di cuenta de que cuando trato de verificar con otras personas las cosas que codifico usando el material que aprendí, generalmente se consideran no idiomáticas y reemplazadas por una forma de STL para hacerlo de manera más segura y fácil (bueno, el libro no lo hace). t cubre las bibliotecas STL y Boost).Cómo aprender a escribir código C++ idiomático

Entonces me gustaría preguntar: ¿cuáles son buenas fuentes para aprender los patrones de un buen programa de C++? ¿Dónde puedo aprender patrones básicos desde la "forma C++" para hacer cosas y no simplemente repetir patrones C en C++?

Me interesarían particularmente las fuentes que incluyan STL y Boost.

+3

Los libros en C++ de Herbert Schildt [son ** altamente no recomendados ** por la comunidad C++] (http://stackoverflow.com/questions/391091/should-i-not-use-a-herb-schildt-book- para aprender de). Es mucho mejor que leas un [libro en C++ de personas que realmente saben de lo que están hablando] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) . –

+0

Oh chico ... Ojalá pudiera haber leído esto antes de comprar el libro. : P Bueno, trataré de obtener otros libros. –

+0

¿por qué no los documentos STL y Boost? – Javier

Respuesta

7

Es posible wnat de revisar The Definitive C++ Book Guide and List

para sus propósitos Lo recomiendo especialmente:

No están en orden especial, también es posible que desee leer y codificar algo entre ellos.

(Nota: Como se ha señalado por @ John Dibling el libro Boost puede ser un poco fuera de fecha, no tengo experiencia con que uno mismo)

+3

general +1, pero no puedo recomendar el libro de impulso. Descubrí que está irremediablemente desactualizado y no se aplica a mis necesidades reales. –

+0

Ok, gracias, edité la respuesta :) – Palmik

+0

Los dos primeros. Luego necesitará el lenguaje de programación C++ de Stroustrup para usar como referencia. –

3

Puesto que usted ha completado el libro de Herbert Schildt, se puede leer el libro de Bjarne Stroustrup (The C++ Programming Language) o el libro de Bruce Eckel (Thinking in C++ Part 1 & Part 2). El libro de Eckel está disponible gratuitamente en Internet y la Parte 2 habla sobre STL.

+0

+1, los libros de Eckel son realmente buenos – Javier

+0

Para lectura y aprendizaje básico, sí, pero también son un poco anticuados, y en su mayoría no ideomáticos C++ modernos. –

1

La mejor manera de aprender a escribir el código idiomático C++ es ... escribir código C++ y hacer que un desarrollador avanzado de C++ revise su código. También debería leer algunos de los libros de C++ más famosos (C++ efectivo de Scott Meyers es un buen comienzo, Modern C++ Design es un mal libro para aprender a escribir buenos códigos C++ pero es un gran libro si quiere descubrir y comprender el concepto de programación genérica).

Además de todo eso, debe leer mucho documento sobre STL y aumentar y aprender mucho sobre los iteradores. Los iteradores son la clave para usar STL (y aumentar la implementación de contenedores y algoritmos) y si no sabe cómo usarlos, no escribirá el código idiomático de C++. Nunca.

1

Accelerated C++ es una introducción a C++ que usa el STL desde el principio. No es un libro largo, pero es "denso" y una gran opción para alguien en su situación IMO. Mi experiencia con C++ fue similar a la tuya cuando la leí.

1

me gustaría (también) recomiendan:

  • Effective C++, Effective STL por Steve Myers. Son fáciles de digerir, pero muy valiosos, a veces incluso esclarecedores.
  • Code Complete (La edición de 1993 está disponible a bajo precio y no es muy diferente). Es largo, pero recorre todo el campo desde lo que significa ser un programador a cómo debería verse un bucle for. (Sería mejor si fuera más corto, como es que cubre tanto terreno que es difícil colocarlo). Lo sostengo querido, ya que ilustran dos puntos muy bien:
    • código es compromiso
    • Existen conocer hechos, (pero que todavía puedan llegar a funcionar por el instinto)
  • C++ FAQ Lite/C++ FAQ.
  • Introduciría Facts and Fallacies por Robert Glass - no se ajusta muy bien a su pedido, pero vaya a leerlo.

Es natural que no está satisfecho con el código de otras personas. Eso es típico de la programación - diablos, incluso mi propio código de hace cinco años fue escrito por un n00b total. Eso podría ser más articulado para C++, ya que atiende diferentes estilos, y a menudo pone la libertad ("usted puede") sobre guildlines ("ese es el camino").

Aún así, reflexionando sobre el código existente, el suyo u otros, y considerando cómo se puede mejorar. Además, averiguar por qué es la forma en que a veces es útil.


(Recuerdo unos de TheDailyWTF donde todo el mundo se interrumpiría lo estúpida e irracional Esto es - sin embargo, en alguna parte, enterrados entre los mí también de, fue alguien con experiencia de dominio explicar convincentemente en qué circunstancias esto era mejor que lo obvio solución).

Cuestiones relacionadas