Código puro: causas y efectos



Autor: Victor Svirsky, desarrollador senior de Python / jefe de equipo, DataArt

Cuántos programadores, tantas definiciones, qué es el código limpio. Al entrevistar, a menudo escucho que un buen código es fácil de leer. Estoy de acuerdo, pero como sugiere mi experiencia personal, esto es solo la punta del iceberg.

La primera campana que nos dice que el código ya no está limpio es un aumento en el tiempo de desarrollo de nuevas funcionalidades y un aumento en los ámbitos de regresión al menor cambio en el sistema. Esto se debe al hecho de que la deuda técnica se está acumulando, los componentes del sistema están muy estrechamente conectados y no hay pruebas automáticas. Las razones para esto pueden ser:

  • Externo, como la presión de la empresa y su deseo de obtener una nueva funcionalidad más rápido.
  • Interno: procesos de desarrollo poco desarrollados e interacción dentro del equipo, falta de control y estándares de desarrollo o una falta banal de competencia.

No posponga el trabajo sobre la calidad del código y la arquitectura en un cuadro largo. Durante el sprint, es importante poder separar las tareas que son de valor directo para el negocio (tareas con nueva funcionalidad) y las tareas técnicas que solo tienen un efecto indirecto en el negocio. La proporción de separación depende del estado actual del proyecto, el marco de tiempo y el número de manos libres.

¿Qué es el código limpio?


Resulta decir que el código está limpio y el sistema está diseñado correctamente, la lectura fácil del código no es suficiente. Debe poseer otras cualidades:

  • . . , . , , .
  • , , . , . . , . , .
  • . . . -, OWASP.
  • — , . , , . , , . , .
  • . , . , .

Para evitar una evaluación subjetiva de la calidad de su código, el término "olores de código" o "código de inventario" se introdujo en 1961. Este es un grupo de reglas y recomendaciones que definen claramente si es hora de refactorizar. El "olor" conduce a la descomposición del código, y los desarrolladores siempre deben esforzarse por eliminarlo. La necesidad de refactorizar se deriva directamente del olor del código, y al evitar la causa, podemos evitar las consecuencias. Puede leer más sobre las señales clave de que debería comenzar a refactorizar en el libro de Martin Fowler "Refactoring". Mejorando el código existente ".

¿Debo escribir código limpio?


¡Definitivamente vale la pena! Pero no siempre y no en todas partes vale la pena prestar demasiada atención a la limpieza.

No te olvides de la utilidad y la vida de tu código. Por ejemplo, si se enfrenta a la tarea de desarrollar un concepto: PoC (Prueba de concepto), y demuestra que la pila de tecnología seleccionada realiza la tarea, su código será irrelevante en una o dos semanas. No vale la pena el esfuerzo para mejorar esta funcionalidad.

Existe la opinión de que no es necesario monitorear la calidad del código o las partes del sistema que pronto serán reemplazadas. Y esto no es cierto por varias razones. La mano de obra de alta calidad hará que la transición o integración con piezas nuevas sea más fácil, más fluida y más fluida. Sin duda, simplificará la vida en los casos en que varias versiones del código deben ser compatibles al mismo tiempo. El número de errores de regresión con código limpio será muchas veces menor. Además, no olvides que no hay nada más permanente que temporal. Quizás la tarea de mejorar esta parte del código durante varios meses se encuentre en la cartera de pedidos.

¿Qué ayudará a mejorar tu código?


La mayoría de los programadores sueñan con escribir código rápida y bellamente, para que todo funcione perfectamente la primera vez. Pero no todos logran que el código no solo funcione, sino que sea comprensible. ¿Cómo tener éxito en escribir código limpio? Hay dos formas: autoorganización y trabajo en equipo.



Autoorganización


Considere varias formas posibles de mejorar la calidad del código individual. Estas recomendaciones son adecuadas para desarrolladores de cualquier nivel.


  1. , — . — . IDE ( ) , , . IDE , . — .

    . , .
  2. open source
    . , . , . !

  3. , . . . , , 10, , . .

    . -, .

  4. . . . .

    . .


  5. . . - . , .

    — , , , , .


  6. , . — .
  7. !

    , .


La mayoría de las tareas se resuelven en un equipo. Es muy importante compartir la responsabilidad de la calidad entre sus participantes. Cuanto más grande es el equipo, más difícil es mantener el producto en buenas condiciones. Consideremos varios enfoques de retención de código en las condiciones anteriores.

  1. Revisión de código
    Este es un principio simple para la comprensión y la ejecución. Al menos dos personas, incluido el autor del código, verifique el código.

    Hay varias cosas a considerar al verificar su código:

    • Una de ellas es verificar si el código viola las reglas del acuerdo de código. Este es un proceso que puede y debe automatizarse utilizando analizadores estáticos en CI (integración continua).
    • Otros son el mantenimiento del código y el manejo de errores que no se pueden verificar automáticamente.
    • , , . , ?

  2. (Continuous integration)

    , .

    , :

    • . . , . , , .
    • , , .
  3. (Coding onventions)

    . , . , , .

    , , , . . , , . , . , . .

    , , . — , - .

    . , . .


  4. , . , , .

    , . , . , , .

    -. . , . . , .


  5. , , . . , .

    , :

    • ? , . , .
    • ?
    • ()?
    • ?
    • — ?

    , , . , .


  6. , . SonarQube. :



    • — . , . , .


    • , — DRY (Don’t repeat yourself).


    • . . . , .


    • , , , .


    • . , . , .

***


Los errores en el código son similares a una huella de carbono. Es completamente imposible escapar, y el exceso de escape por sí solo no matará ni a la humanidad ni a la naturaleza que lo rodea. Sin embargo, reducir el efecto negativo de la permanencia en el planeta hoy parece una necesidad natural. Aproximadamente de la misma manera, escribir código limpio es responsabilidad de cada desarrollador. No importa qué ruta elija, debe esforzarse por escribir código funcional y comprensible.

Bueno, si no puede convertir la pureza en un fetiche, dada la vida útil de nuestro código y evaluar la viabilidad de nuevas mejoras. Lo más importante para recordar acerca de las personas: usuarios que pueden fallar incluso una pequeña parte del sistema desarrollado por nosotros e ingenieros que tienen que soportar este sistema.

All Articles