Parche de mono
Parche de mono ( parche de mono ) - en programación , la capacidad de cambiar los métodos y valores de los atributos de clase del programa durante su ejecución ( tiempo de ejecución ). La tecnología se puede utilizar en muchos lenguajes de programación dinámicos ( JavaScript , Perl , PHP , Python , Ruby , Lua ).
Origen del nombre del método
El término "monkey patch" proviene del término original "guerrilla patch " ( parche de guerrilla ), que significaba una sustitución de código discreta durante la ejecución del programa. La palabra guerrilla (guerrilla) está en consonancia con la palabra gorila (gorila), y así el término de "guerrilla patch" se convirtió en "gorilla patch" y luego en "monkey patch".
La definición exacta y el grado de negatividad del término dependen del lenguaje de programación en relación con el cual se utiliza. Por lo tanto, en Ruby, Python y muchos otros lenguajes de programación dinámicos, el término "monkey patch" se usa solo en relación con el cambio dinámico de clases o módulos, por ejemplo, para corregir un error o agregar una nueva funcionalidad en código externo. El mismo enfoque en otros lenguajes de programación puede llamarse de manera diferente, por ejemplo, "correcciones urgentes" ( hot fix ).
Aplicación
- Sustitución de código dinámico de métodos, funciones y atributos, por ejemplo, para crear una función de código auxiliar para pruebas ;
- Cambiar o expandir la funcionalidad de bibliotecas o productos externos en ausencia de código fuente o si no desea admitirlo en el futuro;
- Sustitución de objetos en memoria durante la ejecución del programa, y no un cambio en el código fuente del programa;
- Distribuir arreglos para un producto que se ejecutará independientemente del código del producto principal.
Problemas potenciales
- Al actualizar un producto al que se le aplica un "parche mono", pueden ocurrir cambios imprevistos en el comportamiento del programa, cuando el parche en sí comienza a basarse en suposiciones incorrectas sobre el código de las funciones reemplazadas. Por esta razón, la mayoría de las veces dichos parches verifican algunas condiciones específicas, por ejemplo, la versión del producto;
- Si al mismo tiempo varios parches intentan reemplazar el mismo método, entonces, como regla, el primero "ganará", y el segundo funcionará sobre la base de la idea incorrecta de que él mismo ha cambiado el código;
- El problema más obvio es que el código fuente y el comportamiento observado del programa ejecutable pueden ser muy diferentes, y será difícil para una persona que no esté al tanto del "parche mono" encontrar un problema en el código.
Además, el uso de tal enfoque viola el principio de encapsulación de la programación orientada a objetos .
Enlaces