En el desarrollo de software, la alternancia de funciones proporciona una alternativa para mantener múltiples ramas de funciones en el código fuente . Una condición dentro del código habilita o deshabilita una función durante el tiempo de ejecución . En entornos ágiles, la alternancia se utiliza en producción para activar la función a pedido para algunos o todos los usuarios. Por lo tanto, la alternancia de funciones facilita la publicación frecuente. Las estrategias de implementación avanzadas, como la implementación de canary y las pruebas A/B, son más fáciles de manejar. [1] [2]
La entrega continua se ve respaldada por la activación de funciones, incluso si no se implementan nuevas versiones en producción de forma continua . La función se integra en la rama principal incluso antes de que se complete. La versión se implementa en un entorno de prueba una vez, la activación permite activar la función y probarla . Los ciclos de integración de software se acortan y se puede proporcionar una versión lista para entrar en producción. [3]
El tercer uso de la técnica es permitir a los desarrolladores lanzar una versión de un producto que tiene características inacabadas. Estas características inacabadas se ocultan (se alternan) para que no aparezcan en la interfaz de usuario . Hay menos esfuerzo para fusionar características dentro y fuera de la rama productiva y, por lo tanto, permite muchas versiones pequeñas e incrementales del software . [4]
Un cambio de característica también se denomina interruptor de característica , indicador de característica , compuerta de característica , inversor de característica o característica condicional .
Los conmutadores de funciones son esencialmente variables que se utilizan dentro de las declaraciones condicionales . Por lo tanto, los bloques dentro de estas declaraciones condicionales se pueden activar o desactivar según el valor del conmutador de funciones. Esto permite a los desarrolladores controlar el flujo de su software y omitir funciones que no están listas para su implementación. Un bloque de código detrás de una variable de tiempo de ejecución generalmente todavía está presente y se puede ejecutar condicionalmente, a veces dentro del mismo ciclo de vida de la aplicación; un bloque de código detrás de una directiva de preprocesador o comentado no sería ejecutable. Un enfoque de indicadores de funciones podría utilizar cualquiera de estos métodos para separar las rutas de código en diferentes fases de desarrollo.
El uso principal de los conmutadores de funciones es evitar conflictos que pueden surgir al fusionar cambios en el software en el último momento antes del lanzamiento, aunque esto puede generar una deuda de conmutadores . La deuda de conmutadores surge debido al código inactivo presente en el software después de que una función se ha activado de forma permanente y produce sobrecarga. Esta parte del código debe eliminarse con cuidado para no afectar a otras partes del código.
Existen dos tipos principales de alternancia de funciones. Una es la alternancia de lanzamiento, que el desarrollador decide conservar o eliminar antes del lanzamiento de un producto según su funcionamiento. La otra es la alternancia de negocios, que se conserva porque satisface un uso diferente al del código anterior.
Los conmutadores de funciones se pueden utilizar en los siguientes escenarios: [1]
Los conmutadores de funciones se pueden almacenar como: [5]
Los grupos de funciones están compuestos por conmutadores de funciones que funcionan juntos. Esto permite al desarrollador administrar fácilmente un conjunto de conmutadores relacionados. [6]
Un lanzamiento canario (o lanzamiento canario o implementación canaria) permite a los desarrolladores que un pequeño grupo de desarrolladores pruebe las características de forma incremental. Los indicadores de características son una forma alternativa de realizar lanzamientos canarios [7] y permiten la segmentación por ubicaciones geográficas o incluso atributos de usuario. [8] Si el rendimiento de una característica no es satisfactorio, se puede revertir sin efectos adversos. [9] Su nombre se debe al uso de canarios para advertir a los mineros sobre gases tóxicos ( canario del minero ).
Martin Fowler afirma que la alternancia de funciones "debería ser la última opción cuando se trata de poner funciones en producción". En cambio, es mejor dividir la función en partes más pequeñas que puedan implementarse e introducirse de forma segura en el producto lanzado sin causar otros problemas. [2]
Muchos sitios web grandes, incluidos Flickr, [10] Disqus, [11] Etsy, [12] Reddit, [13] Gmail [14] y Netflix, [15] así como también software como Google Chrome Canary o Microsoft Office, utilizan la alternancia de funciones. [16]
{{cite web}}
: CS1 maint: numeric names: authors list (link)