Articulo de referencia

Fragmento (de programación)

En programación informática , un fragmento es una cantidad relativamente pequeña de código fuente que se almacena y posteriormente se inserta en una base de código más grande co...

En programación informática , un fragmento es una cantidad relativamente pequeña de código fuente que se almacena y posteriormente se inserta en una base de código más grande como parte del proceso de escritura del código. Algunas herramientas de desarrollo , como un editor de código o un entorno de desarrollo integrado (IDE), proporcionan funciones de gestión de fragmentos para mejorar la productividad , permitiendo al desarrollador insertar un fragmento de código en lugar de escribirlo. [ 1 ]

A diferencia de una construcción de abstracción , como una función , un fragmento es una forma de programación de copiar y pegar : una operación macro que expande el texto de la plantilla almacenada e inserta el resultado en el código fuente. [ 2 ] La inserción de un fragmento es similar a una macro de preprocesador, excepto que inserta la expansión de la definición de la macro en lugar de referenciarla. Cambiar el fragmento después de la inserción no afecta al código como sí lo hace cambiar la definición de una macro de preprocesador. Por esta razón, la mejor práctica es usar un fragmento solo para código relativamente simple, como un prototipo de función, una estructura de control o la importación de una biblioteca. Un fragmento se usa normalmente cuando una abstracción no está disponible (es decir, no es compatible con el lenguaje de programación ) o no es deseable (es decir, debido a la sobrecarga en tiempo de ejecución ).

Una herramienta de desarrollo que permite la gestión de fragmentos de código generalmente ofrece un catálogo de plantillas almacenadas que incluye operaciones como ver, agregar, eliminar, editar y renombrar . Algunas herramientas destacadas que admiten la gestión de fragmentos de código son: Eclipse , NetBeans , Visual Studio y Dreamweaver . Las funciones de los fragmentos de código, como el autocompletado y la sustitución de marcadores de posición, se pueden usar en shells como bash y PowerShell .

Los entornos de desarrollo integrados suelen admitir fragmentos de código mediante la implementación del Protocolo de servidor de lenguaje que admite fragmentos de código. [ 3 ]

Tipos

Ejemplo de un fragmento de código programable en PowerShell

Los fragmentos de código se pueden clasificar según su interactividad, incluyendo:

Estático
Un fragmento estático es un texto fijo que se puede insertar sin necesidad de introducir información en el momento de la inserción.
Dinámica
Un fragmento dinámico contiene marcadores de posición para los que el usuario puede tener que introducir texto de reemplazo en el momento de la inserción.
Programable
Un fragmento de código ejecutable es un código que se puede ejecutar. La compatibilidad con dichos fragmentos puede incluir la ejecución de un comando de shell, la provisión de un cuadro de diálogo de interfaz gráfica de usuario u otros métodos de interacción del usuario con el sistema operativo, otras aplicaciones u otros subcomponentes de la propia aplicación anfitriona.

Marcador de posición

Un marcador de posición es una parte de un fragmento de código que se reemplaza al insertarlo. Generalmente, un marcador de posición tiene una sintaxis de marcado especial que permite a la herramienta de desarrollo identificar sus límites para poder reemplazarlo. Algunas herramientas ofrecen una interfaz gráfica de usuario (GUI) donde el usuario puede introducir valores de reemplazo.

Un marcador de posición generalmente se delimita en un fragmento con una sintaxis especial y puede identificarse mediante un nombre o un número. El siguiente fragmento de texto utiliza marcadores de posición identificados: first_name, last_name, y item:

Hola {% first_name %} {% last_name %} ,Su envío de {% item %} ya está listo para ser recogido.¡Gracias {% first_name %} !

Con un marcador de posición identificado, un fragmento de código puede usar el mismo valor de reemplazo varias veces. En el ejemplo anterior, el marcador de posición first_namees un ejemplo de este uso.

La transformación permite al usuario indicar que uno o más valores proporcionados para un marcador de posición deben replicarse y transformarse en otros lugares del texto del fragmento programable. Por ejemplo, el usuario puede proporcionar el título de un documento en una parte del fragmento y especificar que dicho título se repita en otros lugares, con la primera aparición en mayúsculas y las siguientes en minúsculas.

Ejemplo

El algoritmo para intercambiar el valor de dos variables xpodría ycodificarse como:

temperatura = x x = y y = temperatura 

Para que el fragmento sea más útil, los nombres de las variables se reemplazan con marcadores de posición como:

temp = $1 $1 = $2 $2 = temporal 

Cuando se inserta el fragmento, la herramienta de desarrollo puede solicitar al desarrollador nombres más específicos para reemplazar los nombres de marcador de posición. Para fooy bar, el código insertado es:

temp = foo foo = bar barra = temperatura 

Si el fragmento se modifica posteriormente, por ejemplo, para usar __tempen lugar de temp, el código existente no utilizaría automáticamente la nueva definición del fragmento, pero las inserciones posteriores sí lo harían.

Alternativas

Una alternativa común al uso de fragmentos de código es la función , que tiene la ventaja de que modificar su definición afecta a los usuarios, mientras que modificar un fragmento no modifica las inserciones existentes del mismo. Muchas técnicas de desarrollo, como la programación orientada a objetos y la programación funcional, hacen hincapié en evitar el código duplicado, lo cual es contrario al uso de fragmentos de código.

Otra alternativa es la macro del preprocesador , disponible en C y muchos lenguajes relacionados.

Patrón de diseño
Un patrón de diseño es similar a un fragmento de código en el sentido de que se genera código en lugar de codificarse como funciones, pero un patrón difiere en su alcance. Un patrón es relativamente extenso y, además, resulta complejo codificarlo como una biblioteca reutilizable .
fragmento de código objeto
De forma similar a un fragmento de código fuente, un compilador justo a tiempo (JIT) puede unir código precompilado en segmentos de código objeto más largos . Esto reduce el tiempo de interpretación y acelera la ejecución.
Inserción de código de IA
La inteligencia artificial generativa (IA), como GitHub Copilot, puede inferir la funcionalidad del código fuente e insertar código relevante que podría considerarse similar a un fragmento. [ 4 ] [ 5 ]

Véase también

  • Autocompletar  : función informática que predice el final de una palabra que el usuario está escribiendo.
  • Refactorización de código  : Reestructuración del código informático existente sin cambiar su comportamiento externo.
  • Gestión de contenidos  : creación y presentación de información para una audiencia.
  • Código duplicado  : fragmento repetido de código fuente de computadora.
  • Pastebin  : tipo de servicio de alojamiento de contenido en línea donde los usuarios pueden almacenar texto sin formato.
  • Álbum de recortes (Mac OS)  – Software para ordenadores Macintosh
  • Control de versiones  : gestión de versiones de código fuente o datos.
  • Widget web  : Applet diseñado para ser utilizado dentro de páginas web.

Referencias

  1. ^ "Gedit/Plugins/Snippets" . Archivado del original el 25/08/2012 . Consultado el 09/01/2010 .Ejemplo de esta función en el editor Gedit.
  2. ^ Kim, Miryung; Bergman, Lawrence; Lau, Tessa; Notkin, David (2004). "Un estudio etnográfico de las prácticas de programación de copiar y pegar en OOPL" (PDF) . Actas: Simposio Internacional de Ingeniería de Software Empírica de 2004, ISESE 2004: 19-20 de agosto de 2004, Redondo Beach, California . Los Alamitos, CA: IEEE . págs.  83-92 . ISBN 978-0-7695-2165-7OCLC 326620442.  Archivado del original (PDF) el 19 de octubre de 2016. Consultado el 18 de octubre de 2016. Para cada instancia de C&P, también anotamos la relación entre un fragmento de código copiado y el código en otras partes de la base de código.
  3. ^ "Especificación" . microsoft.github.io . Consultado el 4 de septiembre de 2025 .
  4. ^ HM LE, TRIET; CHEN, HAO; ALI BABAR, MUHAMMAD (2021). "Aprendizaje profundo para el modelado y la generación de código fuente". ACM Computing Surveys . 53 (3). Universidad de Adelaida: 1– 38. arXiv : 2002.05442 . doi : 10.1145/3383458 . S2CID 211096967 . 
  5. ^ "GitHub presenta una nueva herramienta de IA que ofrece sugerencias de codificación" . TechCrunch . 29 de junio de 2021. Consultado el 25 de julio de 2021 .
Obtenido de " https://en.wikipedia.org/w/index.php?title=Snippet_(programming)&oldid=1352556862 "