2010-01-30 20 views
5

Qué principios, calidades de código, prácticas, enfoques, características de lenguaje o marco lo ayudan a reutilizar eficazmente funciones, clases, etc. en un rango más amplio de casos. Todas las situaciones son interesantes: o bien puede modificar tanto la implementación como la interfaz del código para habilitar/mejorar la reutilización, o solo la implementación, o nada en absoluto. Los indicadores clave de la eficacia de la reutilización son (como para mí):Factores que mejoran la reutilización del código

  • cuánto reduce el esfuerzo de implementar y hecho mantenimiento
  • calidad de la aplicación no se degrada
  • cuánto se reduce la complejidad

(todo en comparación con la reimplementación del nivel inferior).

PS. Si es posible, especifique un factor por respuesta con una descripción de cómo ayuda en su caso.

Respuesta

3

Test Driven Development. Para el código sea fácilmente del análisis unidad debe:

1) hacer una cosa sólo

2) tener tan pocas dependencias posible

3) a menudo tienen esas dependencias aprobadas en (por lo que puede haber burlado)

Por una sorprendente coincidencia estos factores también hacen que el código reutilizable. En realidad, no es una coincidencia: la mejor manera de tener código reutilizable para garantizar que sea utilizado por al menos dos personas que llaman lo antes posible. El código creado con TDD comienza a funcionar con dos padres: el código en construcción y las pruebas unitarias, por lo que se está reutilizando desde el principio.

TDD tiene muchas otras ventajas además de la reutilización: le ofrece pruebas automatizadas para todo su código, actúa como documentación de ejemplo sobre cómo usar el código y hace que la refactorización sea más segura. Escribir código con TDD puede tomar más tiempo que escribir código sin pruebas, pero a menudo lo compensará al necesitar mucho menos tiempo de depuración.

5

Es un clásico - bajo coupling y alta cohesión. Si un módulo o función realiza una tarea específica y tiene pocas o ninguna dependencia, será mucho más reutilizable (ya que cabe en una mayor variedad de situaciones) que si realiza múltiples tareas, tiene muchos efectos secundarios, requiere otros módulos , etc.

2

Las funciones no deberían tener efectos secundarios, esencialmente. No utilice variables globales - Pase lo que necesita una función de argumentos, y pasar la salida de la función como valor de retorno

2

El factor principal es un humana y sus habilidades, la experiencia, el cerebro.
Todas las mejores prácticas son inútiles si una persona no sabe cómo aplicarlas.

Para ser más específicos y abordar el comentario que podría enumerar siguientes habilidades/actitudes personales que contribuyen a una reutilización de código:

  • disciplina (copiar y pegar es fácil, buena capacidad de reutilización requiere disciplina)
  • pasión (hay que querer hacer que el código reutilizable y estar orgullosos de ello)
  • Visión del proyecto (que hay que ver el panorama general del proyecto, no sólo instrucciones de código)
  • Feeling del código (que debe ser capaz de atrapar code smells, consulte las prácticas y patrones que pueden ayudar)
  • permiten Test-Driven-Desarrollo mente sólo puede asegurar la calidad del código junto reutilización .

Es similar a ser un buen matemático, científico o artista. Hay muchas prácticas que todos pueden leer y aprender. Pero solo aquellos que pueden aplicar las prácticas pueden dominar su oficio.

El punto principal es que la cuestión de la reutilización es más acerca de la personalidad , que del tecnicismo.

+0

Creo que es obvio que el código es creado y reutilizado por humanos en primer lugar, por lo que sus habilidades sí importan. Por lo tanto, especifique cualquier habilidad concreta, experiencia o función cerebral que contribuya a la reutilización de un código. Algo que podría ayudar a alguien. Downvoted por ahora: su publicación no agrega ninguna información nueva al tema y, lo que es peor, puede desmotivar a un lector. – Alexey

+0

@Alexey, lo siento por ser genérico en mi respuesta. Lo actualicé para que tenga más sentido. –

Cuestiones relacionadas