2010-06-01 15 views
5

He estado codificando por algunos años y todavía siento que mi conocimiento no es lo suficientemente amplio como para convertirme en un profesional. He estudiado algunos libros relacionados con patrones de diseño, pero sé que hay muchos otros.¿Cuál es la lista de patrones y principios que un programador debe/debe saber?

Entonces, ¿podría alguien enumerar los patrones y principios que cree que es bueno aprender a convertirse en un mejor programador y más profesional?

Lenguajes de programación Trabajo en: C#, Ruby, Javascript.

Respuesta

1

Creo que la mejor manera es aprender mucho lenguaje. LISP, Scheme, Python, Smalltalk, Erlang, Prolog, Eiffel y muchos otros

Y construye cosas con ellos.

8

El conocimiento enciclopédico de los patrones de diseño no lo llevará a ninguna parte. Un montón de experiencia aplicarlos lo hará. Esto le enseñará cuándo usarlos y cuándo no.

Dicho esto, el libro original Design Patterns sigue siendo uno de mis favoritos. Elija otros patrones a medida que avanza.

+5

* y cuando no *: definitivamente lo más importante para recordar. Mucha gente parece volverse loca de patrones al principio e intenta convertir todo en patrones, a veces haciendo que el código sea mucho más fácil y que no gane nada. –

+0

@ ho1 +1, ¡cierto! "Para un martillo, todo parece un clavo". –

3

Algunas de las habilidades más independientes del idioma que estoy aprendiendo/trabajando para mejorar mi codificación como un todo.

  • escritura limpia, legible y mantenible código
  • Refactorizando
  • diseño objeto propio de los lenguajes OOP
  • El uso de un sistema de control de código fuente adecuada correctamente. Sourcesafe no cuenta: D
  • Pruebas unitarias & desarrollo basado en pruebas
  • Aplicación correcta de patrones de diseño. Aprenderlos es una cosa, aprender cuándo y dónde aplicarlos es mucho más complicado.

Algunos enlaces para reservar preguntas recommnendation @ SO:

Y, por supuesto, la Pragmatic Programmer books como se menciona en el comentario anterior.

+0

Gracias Sr. Roys, ¿algún libro de sugerencias para lo que enumera? – pang

+0

La serie Pragmatic Bookshelf me parece muy útil: http://pragprog.com/titles. Como la mayoría de las series son bastante cortas, también son buenos textos introductorios :) Creo que hay bastantes publicaciones sobre buenos libros en SO, intentaré encontrarlas y luego editaré la respuesta. – anonymous

0

Martin Fowler's Patterns of Enterprise Application Architecture para crear un vocabulario compartido con otros desarrolladores (por ejemplo, repositorio, registro activo, modelo de dominio, unidad de trabajo).

Douglas Crockford's Javascript: The Good Parts para entender realmente cómo funciona el Javascript.

Y realmente recomendaría entrar en TDD (Desarrollo controlado por prueba). Hay un montón de buenos libros TDD, pero si estás haciendo un desarrollo brownfield (que la mayoría de nosotros lo estamos) entonces realmente recomendaría el Working Effectively with Legacy Code de Michael Feather.

Y, por último, el libro que muestra cómo se puede refactorear y limpiar el código puede ser: Uncle Bob's Clean Code.

0

Además de escribir código, también debe intentar leyendo el código. Por ejemplo, descargue código de proyectos de código abierto, intente jugar con él y comprenda qué está haciendo y por qué. O intente revisar su propio código de un proyecto anterior. ¿Qué harías de manera diferente ahora? ¿Todavía puedes entender por qué lo construiste de la manera en que lo hiciste?

Es posible que también desee conocer algunas de las prácticas derivadas de la comunidad ágil. Especialmente Test Driven Development viene a la mente como una excelente manera de mejorar la calidad de tu código.

3

Los principios es donde comenzaría, con los patrones en un segundo plano.

Principios: Hay toda una balsa, pero estos son los que me dan el kilometraje práctica de:

Muchos de estos (cuando se agrupan toget ella) se conocen como SOLID (diseño orientado a objetos).

Patrones:

  • Mis biggets favorito por una milla es la Dependency Inversion Principle (DIP), también conocido comúnmente como (o al menos muy similares a) Inversion of control (COI). Es realmente bueno para abstraer las implementaciones de acceso a datos detrás de las interfaces. Martin Fowler lo llama un nombre diferente (lo siento, no tengo mi copia de 'Patterns of Enterprise Application Architecture' delante de mí).
  • Lazy Load también es útil.
  • Factory pattern es muy conocido, por una buena razón.
  • Facade pattern también me ha ayudado a mantenerme fuera de problemas.

Wikipedia tiene una muy buena lista de Software design patterns, suponiendo que aún no lo haya visto.

Lo último a tener en cuenta es que hay tres tipos básicos de patrones (más una cuarta categoría para multiproceso/concurrencia); puede ayudar sólo para saber acerca de estas categorías y tenerlas en cuenta cuando se está haciendo algo, que son:

  • creacional
  • estructural
  • conductuales
+0

Creo que Martin Fowler llama a DIP como Dependency Injection (DI). http://en.wikipedia.org/wiki/Dependency_injection – anonymous

2

herramientas de masterización (por ejemplo, paradigmas de programación, patrones, control de fuente, pruebas unitarias ...) es esencial, pero no es suficiente llamarse a sí mismo un "profesional": en mi humilde opinión, la marca de un programador verdaderamente profesional es la capacidad de comprender lo que su cliente necesita. Desafortunadamente, este tipo de conocimiento es muy difícil de aprender de un libro.

0

Creo que, Todos los patrones descritos en el libro Head First Design Pattern son los mínimos que un diseñador/programador debe conocer. Sugiero este libro para comenzar a aprender patrones de diseño. Otro libro, Design Pattern Work Book también es bueno para practicar.

Cuestiones relacionadas