2009-03-13 15 views
7

¿Por qué tanta gente sigue escribiendo versiones cutáneas de cosas en bibliotecas estándar? No ir tras los desarrolladores de PHP, pero los chicos van a leer el PHP SPL¿Cómo hacemos que los codificadores busquen las funciones existentes antes de escribir las suyas propias?

+0

+1. Es un problema serio, ojalá tuviera una respuesta. – AnthonyWJones

+3

SPL sigue siendo una parte muy oscura de la documentación. De hecho, incluso lo que está documentado es incompleto. –

+2

Documentación secundaria deficiente. – bdd

Respuesta

6

Mejores técnicas de búsqueda. y Familiarización con el dominio específico

¿Cómo averigua un desarrollador una función que desconoce el nombre? O quizás no exista una función incorporada EXACT para hacer lo que quieran, sino algo que puedan usar para guardar una gran cantidad de código. Debe poder encontrar la terminología correcta para el problema en cuestión, y desde allí sabe qué buscar. Esto se logra mejor leyendo temas específicos de su dominio problemático. Aléjese de codificar recursos específicos y gaste en algún momento en el campo que está codificando ... ya sea minorista, médico, seguro, etc.

+0

¿Quién, en este día y edad, no puede buscar nada, investigar un poco en la Wikipedia o lo que sea, descubrir la terminología adecuada y ejecutar una búsqueda en Google? Toma menos tiempo que reinventar la rueda. –

+0

El problema es saber que no tienes la terminología adecuada en primer lugar. –

+0

de acuerdo, mi primer pensamiento al resolver un problema es buscar algo similar en Google; desafortunadamente, Google no es perfecto, pero normalmente puedo encontrar algo si existe (concedido, si no lo encontré, no tengo idea de si existe, pero, bueno, sí, paradoja) – zaczap

11

La revisión por pares puede ayudar a detectar ese tipo de cosas. Si tiene otro desarrollador mirando el código, y continuamente encuentra implementaciones de métodos de biblioteca estándar, debería fallar la revisión a menos que haya una buena razón para reinventar la rueda.

+0

Puede usar las revisiones por pares para generar listas de verificación de problemas comunes (como esta) e identificar las necesidades de capacitación. – MarkJ

+0

Precisamente. Como parte de un proceso normal de revisión por pares, los desarrolladores aprenderán a evitar errores pasados, que en este caso significarían que comenzarían a buscar en las bibliotecas comunes para su reutilización. – Elie

8

A los programadores jóvenes y ambiciosos les gusta resolver cada problema por su cuenta. No necesitan ninguna biblioteca apestosa. Los programadores más antiguos y perezosos preferirían buscar soluciones existentes para el problema en cuestión.

Así que mi consejo: la próxima vez que contrates a un programador, elige al viejo que se queda dormido en el área de recepción.

Es broma, principalmente. La revisión por pares y la educación son la respuesta.

+0

Me gusta cómo culpas a los jóvenes 'uns' y culpo a los viejos 'uns - claramente los programadores son un grupo rebelde: P – annakata

+1

En mi experiencia, Annakata tiene razón. Los programadores antiguos de C++ que han estado escribiendo software desde antes de que existiera la biblioteca estándar de C++ escribirán todo ellos mismos. –

3

Un documento de estilo de codificación simple podría ayudar al recordar a los desarrolladores que hay bibliotecas disponibles (tal vez enumerar algunas preferidas) y que deberían estar familiarizadas con ellas.

A veces, solo tiene que recordarle a la gente.

Una revisión por pares podría ayudar.

6

Resumen: Asunción es la madre de todas las FUBARs

Veo esto un montón de colegas que no están familiarizados con el concepto de marcos (dios la forma en que se quejan de "dos idiomas en un"), a saber: : viejos chicos de C++ enfrentados repentinamente con C# bucear en la cabeza para recrear tablas hash desde cero ...

Claramente, una gran parte de este fenómeno desde ese ángulo no está saliendo de las viejas mentalidades y hábitos. Si estás en un nuevo entorno, debes aprender las nuevas reglas. La única forma de lidiar con eso desde el exterior es proporcionar capacitación, ya sea programación de pares por un tiempo o algo más formal.

La falta de familiaridad con sus herramientas engendra el desprecio de los demás.

+0

Buen punto. ¿Hay libros que aborden específicamente el problema de pasar de un idioma a otro? Eso sería interesante ... "así es como haces la mayoría de las cosas que probablemente estarías haciendo en el lenguaje X, en el lenguaje Y". – Boden

+0

IIRC, se publicaron varios libros tipo "C# para chicos de C++". –

+0

Y otros: He visto/escuchado de Java para JS, JS para Java, Ruby para Java, Ruby para PHP, Python para Perl, etc., etc. La gente necesita aprender que la programación se supone que es independiente del lenguaje. – annakata

1

Pregunta muy difícil de responder. Obviamente, la revisión por pares ayuda, pero también la documentación adecuada. ¿Sus proyectos tienen especificaciones técnicas, donde mapea las clases e interfaces que se crearán?

Si es así, alguien más en el equipo deben revisar las especificaciones y señalar dónde se podría utilizar el código existente ...

3

PHP está bien documentada si y sólo si, usted sabe exactamente lo que estás buscando .Por ejemplo, abriría las secciones Arrays y Array functions para ver qué puede hacer con las matrices. Y adivina qué, ni siquiera hay mención de SPL.

2

Dos razones vienen a la mente rápidamente. En primer lugar, la biblioteca PHP estándar no es bien conocida y adolece de documentación deficiente. El sitio web php.net es ampliamente considerado como el mejor recurso del idioma, pero muchas de las nuevas clases incorporadas (como SPL, API de reflexión, DomDocument, etc.) son poco más que una lista de métodos sin mucho contexto.

Más importante aún, parece que el SPL completo nunca se envió por defecto con ninguna versión de PHP anterior a la (inédita) 5.3. Esto es un asesino en lo que respecta a la adopción. Por lo general, las personas que escriben código PHP no tienen control sobre lo que se cumple en su binario PHP. Eso es manejado por su equipo de host y/o de operaciones web, y los servidores web y/o los equipos de operaciones tienen objetivos diferentes a los de un desarrollador y no van a instalar cada extensión opcional que se presente. Esto también significa que proyectos como Drupal, Joomla, Wordpress, etc. no pueden confiar en que el SPL esté instalado en todas partes, por lo que no lo usan.

Parte de la razón PHP "ganó" sobre perl era una sola instalación tenía todo lo que alguna vez necesitó. Las extensiones opcionales nunca se han adoptado ampliamente hasta que se convirtieron en parte de la instalación base.

+0

Al menos partes de SPL están en 5.2. Estoy usando iteradores en varios lugares. Sé que no está todo disponible y no está ni remotamente claro sobre lo que está disponible y cómo usarlo todo. – Zoredache

+0

Excelente punto. Antes de esta publicación no estaba realmente al tanto del SPL, pero ** tenía ** iteradores conscientes, y no los consideraba parte del SPL. –

+0

Problema con SPL es que muchas instalaciones de PHP siguen siendo 5.1.xo incluso 4.4. – jmucchiello

0

De acuerdo con el entrenamiento y la revisión por pares, sino también la aplicación de la unidad de pruebas y documentación de código debería ayudar con el síndrome NIH :)

3

También debe fomentar la investigación antes de que realmente se fijan en la escritura de código. Normalmente abordo los problemas pensando en una forma de hacerlo, luego trato de encontrar algo en la biblioteca estándar o en cualquier otra biblioteca que me ayude. Yo diría que una hora de investigación en algunos casos puede valer días de codificación.

Si las personas no están haciendo esto, puede ser una buena idea que alguien les haga preguntas sobre su enfoque general del problema y sobre qué funciones/clases de biblioteca están pensando utilizar. Si les falta algo obvio, sugiérelo.

Cuestiones relacionadas