Revisiones de código, ¿cuáles son las ventajas? [cerrado]

12

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?

Edgar Gonzalez
fuente
1
Pregunta relacionada: programmers.stackexchange.com/questions/15874/… Puede encontrar algunas de las respuestas allí interesantes.
Kevin D
A la gente le falta el punto sobre las revisiones de código ... No solo verifican la corrección del código, sino que también echan la culpa si algo luego resulta ser incorrecto. Con la programación en pareja, eres tú o el otro tipo el que se queda con el control.
James

Respuestas:

8

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:

  • Cada miembro sabe lo que sucede en la empresa.
  • Los errores se encuentran más rápido
  • Nos obliga a escribir código legible (¡código que se puede leer sin explicación o introducción!)
  • Los métodos de optimización / trucos / programas productivos se extienden más rápido
  • Programador como especialista "evoluciona" más rápido
  • Es divertido

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.

JackLeo
fuente
¿A qué se refiere cuando dice "cuanto más tiempo trabaja el equipo en conjunto, más rápido se vuelve"? ¿Y cómo es eso algo malo?
Edgar Gonzalez
El equipo se conoce entre ellos para poder terminar las tareas más rápido. No obtienes eso si constantemente mezclas pares.
JackLeo
Ah, pero conoces mejor a todo el equipo, y también obtienes un mejor conocimiento general del dominio del problema, así como 3 o 4 opiniones diferentes de todos los miembros del equipo y no solo de uno :)
Edgar Gonzalez
Obtiene lo mismo durante las revisiones de código. :) más sobre usted obtiene la opinión sobre cada caso de cada programador de la compañía. Solo tengo que esperar unos días.
JackLeo
4

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.

Joeri Sebrechts
fuente
2

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.

refro
fuente
1

¿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:

  1. Obtiene una nueva mirada sobre el código, alguien que puede tener un conocimiento más íntimo de las áreas de la base de código con las que usted (y / o su pareja) pueden no estar tan familiarizados. Esto puede exponer problemas de imitación.
  2. Hace que (el par) vuelva a validar su solución antes de enviarla. Como el revisor no sabe nada de lo que ha escrito, debe explicarlo en su totalidad. Esto puede exponer casos extremos en los que no había pensado o lógica no válida.

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 :)

Demian Brecht
fuente
2
"Nunca duele". Bueno, si puede. Las revisiones de código son costosas y pueden ser una gran pérdida de tiempo, lo que sería mucho mejor gastar entregando software de trabajo.
Martin Wickman
@ Martin en el otro lado, la revisión por pares aumenta el número de camiones. Tener al único tipo que sabe lo que X muere es una gran pérdida de tiempo mientras intentas girar un reemplazo.
Frank Shearar
@Frank Sí, pero estamos comparando revisiones formales con programación de pares y pp funciona bastante bien (mejor en mi opinión) con mantener el número de camiones manejable.
Martin Wickman
@ Martin: Si honestamente crees eso, entonces estoy dispuesto a apostar que has estado al final de las revisiones de código ineficaces. En términos generales, he oído que las revisiones de código son una "gran pérdida de tiempo" de las mismas personas que insisten en que los diseños técnicos no son un requisito para el desarrollo. Después de años de desarrollo en un entorno de alta presión, puedo decirle inequívocamente que las revisiones de código no son una pérdida de tiempo. La calidad del código aumenta, el recuento de errores disminuye, la transferencia / intercambio de conocimientos aumenta.
Demian Brecht el
@Demian, nuevamente estamos comparando con pp, que es la revisión de código, pero sucede constantemente. Eso lo hace mejor que las revisiones formales de código en mi experiencia. La revisión por pares es esencial, pero hay varias formas de hacerlo.
Martin Wickman el
1

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.

Las tasas de revisión de código típicas son aproximadamente 150 líneas de código por hora. Inspeccionar y revisar más de unos cientos de líneas de código por hora para software crítico (como el software integrado de seguridad crítica) puede ser demasiado rápido para encontrar errores.

Citado de Wikipedia (énfasis por mí).

Péter Török
fuente
1

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.

Martin Wickman
fuente
0

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?

Kevin Cline
fuente
0

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.

  • La pareja podría estar haciendo algo mal o tal vez hacerlo de una manera subóptima
  • Quizás no esté siguiendo los estándares de codificación o no esté documentando el código correctamente. Una revisión por pares es realmente buena para encontrar estos
  • Nadie más que el par entiende un código particular. Entonces, ¿qué sucede si ambos miembros de la pareja se han ido y el código está mal documentado? Otros perderán el tiempo tratando de resolver las cosas. Tener una tercera persona que sepa lo que has hecho reduce el riesgo.

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.

DPD
fuente
0

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.

James Anderson
fuente