En mi equipo, no hacemos revisiones formales de códigos. Tendemos a pensar que es suficiente con la programación de pares y la rotación de pares a menudo.
¿Deberíamos considerar hacer revisiones formales del código? ¿Cuáles serían las ventajas?
agile
code-reviews
pragmatism
Edgar Gonzalez
fuente
fuente
Respuestas:
Hacemos revisiones de código un poco diferentes (tal vez).
Venimos todos los programadores juntos (todos los viernes) y miramos lo que hemos hecho en un período de semanas. Luego elegimos qué proyectos queremos revisar para que cada proyecto realizado / en progreso tenga al menos una o pocas personas. Luego, en una hora más o menos, observamos los cambios que se hicieron, buscamos errores, cómo funcionan otros proyectos, etc. Luego, discutimos, decimos los errores, cómo debería hacerse (no solucionamos errores, solo los señalamos). y spam el código con FIXME). En general, generalmente para nosotros (10 programadores) lleva alrededor de 2 horas.
Los profesionales:
Lo que tengo en contra de la programación de pares como se mencionó (seguro que es solo mi opinión personal) es que cuanto más tiempo trabaje el equipo en conjunto, más rápido se vuelve.
Espero que traiga algo de reflexión. Buena suerte.
fuente
Es posible que desee leer este libro gratuito:
http://smartbear.com/best-kept-secrets-of-peer-code-review/
Claro, tienen un producto que impulsar, pero todavía hay mucha información útil allí.
También discuten cómo la programación de pares proporciona algunas de las mismas ventajas, por lo que si está programando pares, es posible que no necesite revisar el código en absoluto.
fuente
No tengo mucha experiencia en la revisión en su entorno. No hacemos mucha programación de pares aquí, hacemos revisiones de códigos para difundir el conocimiento del software en el equipo, tenemos otro par de ojos para identificar los errores y tenemos un punto formal para verificar si el software se apega a nuestras pautas de codificación .
Los primeros 2 puntos están bastante bien cubiertos por la programación del par, el tercero depende mucho del par y podría mejorar con una revisión formal del código.
fuente
¿Deberías hacer revisiones formales del código?
Absolutamente
Solo como una nota lateral rápida, tengo muy poca experiencia con la programación emparejada, pero no creo que las revisiones entren en conflicto con estos métodos.
Introduciría dos formas de revisiones de código:
Revisiones de código de pares
Incluso si la programación emparejada funciona para usted, nunca está de más tener otra mirada en el código. Los beneficios de esto son:
Las revisiones de código de pares (en mi mundo) se realizan antes de cada envío. Cómo esto se lleva a cabo en el mundo de programación emparejado, no estoy seguro.
Revisiones de código de grupo
Esto ocurre con menos frecuencia que las revisiones de código de pares. En general, arrastraría a mi grupo (o una subsección de mi grupo) en una sala de reuniones para una revisión informal del código. Por lo general, elegiría un código que fue escrito por una persona aleatoria en el equipo, preferiblemente el código que fue escrito desde cero: el código refactorizado no expone problemas como el código nuevo.
Asegúrese de que todos sepan que estas revisiones no están destinadas a avergonzar y no se utilizan para reflejar el rendimiento. Son simplemente para garantizar que se sigan los estándares de codificación de su equipo y ayudar a todos a ser mejores ingenieros y, por lo tanto, ser más útiles para el equipo (y un mayor crecimiento profesional, etc., etc.) y asegurarse de que esta sea la verdadera intención de las revisiones. . Si alguien sospecha algo diferente, estos serán temidos y menos productivos.
Revisaría el código de manera informal, dejando que cualquiera en la sala señale diferentes soluciones que puedan tener o fallas lógicas que encuentren. Esto pretende ser más una discusión grupal que un líder sentado allí diciéndoles a todos cómo deben codificar.
Descubrí que el empleo de estos dos métodos aumenta la velocidad a la que progresan los ingenieros y reduce considerablemente el número de errores :)
fuente
Nunca he realizado programación de pares en la práctica (solo esperaba), por lo que no puedo comparar directamente las dos prácticas. Sin embargo, puedo contar mis experiencias con las revisiones formales de códigos.
Solía liderar revisiones formales de código en un proyecto anterior, en código heredado. El proyecto estaba en completo desorden y la gerencia agradeció cualquier iniciativa con la esperanza de poner el orden en el caos. En ese momento pensé que la revisión formal del código era una buena idea. Encontramos errores y vimos que la calidad del código recién escrito era significativamente mejor que la del código antiguo. Recopilé estadísticas, recuentos de errores, etc. para probar esto.
Hicimos una sesión por semana en promedio, involucrando a 3-5 personas. Cada sesión tomó aproximadamente 3-4 horas de tiempo por persona (incluida la preparación) y revisó 200-300 líneas de código (LOC) *. En este ritmo, durante un período de más de 6 meses, logramos revisar aproximadamente 5K LOC, de aproximadamente 50K.
En retrospectiva, siento que fue muy costoso. Con este ritmo, nos habría llevado 5 años revisar la base de código heredada completa. OTOH tener más de una sesión a la semana habría quitado recursos del desarrollo. Por supuesto, ese es el típico dilema con el código heredado. Pero incluso revisar formalmente todo el código recién escrito llevaría mucho tiempo, lo que ralentizaría significativamente el desarrollo.
Mi conclusión es que las revisiones formales de código se realizan mejor en código recién escrito, centrado en las partes más críticas del código. El resto se maneja mejor de una manera más informal, posiblemente a través de la programación de pares. Sin embargo, esta es solo mi opinión actual, que puede cambiar. No pretendo ser un gurú de revisión de código ni nada.
* Este es el ritmo normal de las revisiones formales de códigos.
Citado de Wikipedia (énfasis por mí).
fuente
La razón subyacente de las revisiones de códigos existe porque los programadores aislados necesitan reunirse y discutir su código y verificar que se ajuste a su estándar.
No menciona ningún problema de calidad, por lo que parece que su equipo ya está haciendo suficientes revisiones de código a través de su programación de pares. ¡Increíble!
La programación de pares realizada correctamente hace que las revisiones formales de códigos sean superfluas. Pero pruébelo durante unas semanas y vea cómo funciona, pero sospecho que no notará ninguna mejora.
Tenga en cuenta que las revisiones de código son un proceso agotador y costoso y no es algo que deba tomarse a la ligera. Básicamente, introduce una transferencia en su proyecto que es costoso y ralentiza todo . Es mucho mejor asegurarse de que el código sea correcto en primer lugar, en lugar de tratar de encontrar problemas más adelante.
fuente
Tal vez. Las revisiones de código llevan tiempo. Solo valen la pena si el tiempo que lleva la revisión se guarda en otro punto del proceso. ¿Qué ahorros esperas de las revisiones de código? ¿Está experimentando dificultades que podrían evitarse mediante revisiones de código?
fuente
Si está haciendo programación de pares, la necesidad de una revisión de código disminuye sustancialmente, pero ciertamente se beneficiaría de una revisión por pares. Para que esto sea beneficioso, debe hacerlo una persona mayor y con más experiencia que los miembros de la pareja.
¿Cuales son los beneficios? Bueno, sería mejor si consideras los riesgos de no hacerlo.
Me divierte que la gente haya dicho que la revisión del código es una pérdida de tiempo. Sí, lleva tiempo. Tal vez no producirá ningún cambio en el código, pero eso no significa que se desperdicie. Es como decir que no necesita revisar su sistema contra incendios con regularidad porque es una pérdida de tiempo.
fuente
Para mí, la principal ventaja de las revisiones de código es que hace que las personas escriban un código mejor.
Saber que su código será leído y revisado lo hace más consciente de la legibilidad y la "corrección" de su código. Cuando sabe que el código va directamente al repositorio y nadie más lo leerá a menos que estén solucionando defectos, tiende a dejar que las cosas se resbalen, como no volver a factorizar los nombres de los campos cuando cambia su uso, dejando los métodos no utilizados dando vueltas en caso de que puedan ser factorizado de vuelta en etc. etc.
fuente