Estoy buscando algunas ideas aquí.
Leí el artículo ¿Cómo deben realizarse las revisiones de código y las Revisiones de código, cuáles son las ventajas? que fueron muy informativos pero todavía necesito más claridad sobre la pregunta a continuación.
Mi pregunta es,
Al ser el desarrollador objetivo, ¿puede sugerir algunas de las mejores prácticas que un desarrollador puede incorporar antes de que se revise su código?
Actualmente practico los siguientes métodos
- PPT para un flujo lógico
- Comentarios detallados
Problema: aunque he implementado las prácticas anteriores, no ayudan en la revisión. El problema que enfrenté es que, cuando se hace referencia a cierta lógica, sigo buscando la implementación y el flujo, y se pierde demasiado tiempo en el proceso y me pongo nervioso.
Creo que muchos desarrolladores también estarían pasando por lo que yo estoy pasando.
fuente
Respuestas:
Entonces, según los detalles que OP proporcionó, parece que la pregunta es "¿cómo aprendo mi propio código para que cuando se me pida encontrar X o explicar Y, pueda responder rápidamente?".
Pocas sugerencias en las que puedo pensar:
Al codificar, debe tomarse el tiempo para aprender y comprender su propio código. Esto podría ser lo que su TL intenta comunicarle en pocas palabras. Al ser un TL en el proyecto actual, he realizado muchas revisiones de código en los últimos 11 meses y noto la práctica de algunos desarrolladores de buscar "código de ejemplo" en nuestra propia base de código o en otro lugar (google , etc ...) y copiarlo / pegarlo. Personalmente, no lo soporto porque si bien su código pasa las pruebas unitarias simples, no entienden lo que realmente está haciendo, por lo que nunca se garantiza que no haya t algún caso límite o una condición de falla esperada que podría ocurrir.
Como corolario de la declaración anterior, si tiene que copiar / pegar, intente copiar / pegar solo el código que ha escrito previamente y que comprende. Ciertamente está bien "tomar prestada" la idea de otras personas, pero en ese caso, reescriba su código línea por línea porque a medida que lo escriba, obtendrá una mejor comprensión de lo que hace. Si está utilizando API externas, incluso si tiene un ejemplo que usa esa API, tómese unos minutos de todos modos para encontrar una referencia y aprender cómo funciona esa API. No asuma que si funcionó antes, también funcionará en su situación.
Lea y aprenda a amar el principio SECO . Muchas veces, lo que está tentado a copiar / pegar podría colocarse en una ubicación común (función separada, clase separada, biblioteca separada ...)
Lea y aprenda a amar los principios SÓLIDOS y, mientras lo hace, revise KISS, que ya mencionó Mouviciel. Todos estos principios están orientados a producir código muy conciso, limpio y modular. Si tiene clases grandes y funciones grandes dentro de ellas, claramente será mucho más difícil encontrar cosas y además tratar de explicar qué hace el código. Por otro lado, si sigue (o al menos intenta seguir) SRP y hace que cada clase / función sea responsable de una sola cosa, su código será pequeño y muy legible.
Recoge una copia de Clean Code . Muy buen libro. Habla de escribir código que se explica por sí mismo y es fácil de leer, mantener y ampliar. Si practica escribir código que sea fácil de leer, no debería tener problemas para leer su propio código en las revisiones de código. Y esta es la parte divertida, les pedí a las personas que leyeran su propio código o simplemente me dijeran qué representaban las variables y no pudieron responder a pesar de que escribieron ese código (clases nuevas, no heredadas) hace solo una semana . Los buenos nombres son muy útiles.
Si después de toda la simplificación y refactorización, todavía tiene una función que debe realizar algún tipo de algoritmo que no es muy aparente, tómese el tiempo y escriba un bloque de comentarios en esa función que explique el algoritmo. No solo será útil cuando tengas que modificar esa función dentro de 2 meses, sino que si te emboscan en una revisión de código, simplemente podrás volver a leer lo que escribiste.
Si después de todos los elementos anteriores, ¿todavía se encuentra en problemas? ¿Eres nuevo en el equipo y te pidieron que trabajes con mucho código heredado? En ese caso, podría ser que su TL sea un A $$ y usted podría ser proactivo preguntándole antes de la reunión que sea fácil y no pierda el tiempo de todos los involucrados. Cuando nuevas personas se unen a un equipo, TL debe tener suficiente paciencia porque trabajar en una nueva plataforma, un nuevo producto, nuevas personas, un nuevo entorno requiere mucha concentración de una nueva persona, y esa persona se perderá algunos detalles al principio. Funciona según lo diseñado y su TL debería aceptar eso.
Si después de todos los elementos anteriores, todavía siente que tiene revisiones horribles de códigos. Hable con su TL. A veces las personas se sienten mal por la naturaleza de las reuniones de revisión de código cuando, de hecho, TL está perfectamente feliz con usted. Cuando hago revisiones de código, mi objetivo es resaltar lo que se debe cambiar, asegurarme de que entiendes los cambios y seguir adelante. Muchas veces no tengo tiempo para ser cortés y algunas personas se ponen a la defensiva e intentan responder a cada uno de mis comentarios. En esas situaciones, la reunión de revisión de códigos se detiene por completo, por lo que tiendo a interrumpirlos y seguir adelante. En general, después de la reunión, hablaría con los nuevos muchachos para asegurarme de que entiendan el proceso y que no sea nada personal. Después de algunas revisiones de código, la gente generalmente se siente mucho más cómoda.
fuente
Las prácticas varían, pero en mi experiencia:
No hagas nada especial con el código. Es natural ampliar un poco más su código cuando se entera de que va a ser revisado, y no tiene nada de malo arreglar cosas obvias, como errores ortográficos y demás. Pero no entre y agregue muchos comentarios detallados ni cambie el código solo porque está programado para su revisión.
El código se prepara y distribuye a los revisores mucho antes de la revisión. Esto generalmente lo hace un tercero neutral, probablemente el facilitador de revisión de código. Si se imprime, el código debe ser lo suficientemente pequeño como para que las líneas no se envuelvan con demasiada frecuencia, pero lo suficientemente grande como para que todos puedan leerlo fácilmente. Imprímalo en formato horizontal si eso es lo que se necesita.
El código debe imprimirse o mostrarse con números de línea . Preferiblemente, el número debe continuar de un archivo al siguiente. Es mucho más fácil referirse a la "línea 3502" que a la "línea 238 de foo.c", y tener los números les permite a todos hablar sobre líneas específicas sin perder el tiempo buscando esas líneas.
Definitivamente debería haber un facilitador , por cierto. Su trabajo es evitar que la revisión se atasque por minutos, evitar que se vuelva personal o acalorada, y limitar estrictamente la duración de la revisión.
Como autor, debe revisar el código usted mismo antes de la reunión de revisión. Escriba los cambios que sugeriría si este fuera el código de otra persona. Esto activa su memoria de código que podría no haber visto en unos días, y también le ayuda a practicar la observación de su propio código con ojo crítico. Después de haber revisado algunas críticas, tanto como revisor como autor, encontrará que sus propias notas coincidirán más estrechamente con las del resto del grupo.
Esté preparado para tomar notas durante la revisión. Esta no debería ser su principal preocupación: alguien más debería registrar los elementos de acción en los que el grupo acuerda para que pueda concentrarse en explicar el código y escuchar los comentarios. Pero habrá momentos en los que obtendrá comentarios valiosos que no son un elemento de acción, y debería corregirlos cuando ocurran.
Recuerda que no es personal. Es difícil evitar sentirse (y actuar) a la defensiva durante una revisión. Está bien explicar su código si cree que fue mal entendido, pero más que nada intente simplemente escucharlo.
fuente
Una cosa más para agregar a las otras respuestas: para facilitar la revisión de códigos formales , realice MUCHAS revisiones de códigos informales . Por ejemplo:
"Hola Bob, ¿puedo mostrarte cómo implementé la función foo ()?" "Hola Steve, ¿puedes echar un vistazo a este diagrama de clase y decirme qué piensas?" "Hola Karen, ¿puedes ayudarme a pensar en este problema? Creo que tengo una buena solución, pero podría usar tu ayuda ..."
Haz de esto un hábito regular. Cuando involucra a sus compañeros de trabajo al principio del proceso de diseño, usted:
fuente