Cuando utilizo funciones para administrar la implementación, ¿debería dividir mi funcionalidad en muchas funciones pequeñas o una gran función?

15

Soy relativamente nuevo en el módulo de funciones y he leído en línea recomendaciones contradictorias sobre si es más fácil mantener A) una función grande o B) varias funciones más pequeñas y luego un módulo de tipo " controlador de funciones " que enumera todas las funciones más pequeñas como dependencias

Un poco sobre mi situación específica: estoy usando un local development -> dev server -> staging server -> live serverflujo de trabajo. Es casi seguro que este sitio en particular será el único de su tipo que haya desarrollado; No tengo la intención de utilizar el featuresque creo para este sitio en ningún otro sitio.

Esto me hace inclinarme hacia hacer todo en una gran característica porque he tenido problemas en el pasado donde accidentalmente definí las mismas reglas en múltiples funciones y me metí en problemas. Sin embargo, en términos de estructura, esto me parece incorrecto: hay diferentes características / funciones, por lo que deberían dividirse en características separadas. Por otro lado, siento que al hacer esto, puedo crear trabajo adicional y gastos generales para mí que no beneficiarán a nadie.

¿Qué enfoque es más fácil de mantener en la práctica real, una característica grande o muchas más pequeñas?

Patrick Kenny
fuente

Respuestas:

7

Haga varias pequeñas características, divididas por capa conceptual .

Ventajas:

  1. Granularidad al revisar Anulaciones y realizar Reversiones, por lo que no tiene que revertir todo a la vez.
  2. Modularidad: incluso si no planea reutilizar componentes individuales, desglosar los elementos en módulos discretos ayudará con el mantenimiento.

Para implementar un solo sitio desde el desarrollo hasta la prueba y la producción, utilizamos la siguiente taxonomía (donde "sitio" se reemplaza con un nombre de máquina único para el sitio):

  • site_typesCaracterística: declara tipos de contenido, campos, configuración de ImageCache, roles de usuario
  • site_structureCaracterística: declara contextos, vistas, menús y enlaces de menú , bloques, permisos de usuario, variables
    • depende de la site_typescaracterística
  • site_contentCaracterística: declara nodos
    • depende de la site_structurecaracterística

Si hay varias secciones distintas del sitio (por ejemplo, Público versus Privado), considere dividir las cosas aún más:

  • site_types Característica
  • site_structure Característica: declara componentes estructurales comunes a los públicos y privados
    • depende de la site_typescaracterística
  • site_public_structure Característica
    • depende de la site_typescaracterística
  • site_public_content Característica
    • depende de la site_public_structurecaracterística
  • site_private_structure Característica
    • depende de la site_typescaracterística
  • site_private_content Característica
    • depende de la site_private_structurecaracterística
smokris
fuente