Snippet es un término de programación para una pequeña región de código fuente , código de máquina o texto reutilizables . Por lo general, estas son unidades operativas definidas formalmente para incorporar en módulos de programación más grandes . La gestión de fragmentos es una característica de algunos editores de texto , editores de código fuente de programas , IDE y software relacionado . Permite al usuario evitar la escritura repetitiva en el curso de las operaciones de edición de rutina. [1]
Descripción general
La gestión de fragmentos es una función de editor de texto popular entre los desarrolladores de software u otros que habitualmente requieren contenido de un catálogo de texto introducido repetidamente (por ejemplo, con código fuente o repetitivo ). A menudo, esta característica se justifica porque el contenido varía solo ligeramente (o nada) cada vez que se ingresa.
Fragmentos en editores de texto
Los editores de texto que incluyen esta función normalmente proporcionan un mecanismo para administrar el catálogo y separan "fragmentos" de la misma manera que el editor de texto y el sistema operativo permiten la administración de archivos separados. Estas capacidades de administración básicas incluyen operaciones como ver, agregar, editar, eliminar, ordenar, filtrar, agrupar, renombrar y almacenar fragmentos en un repositorio , catálogo o base de datos . Algunos editores proporcionan una capacidad macro para fragmentos que permiten generar prototipos de funciones y estructuras de control de variables basados en una plantilla estándar.
Fragmentos en IDE
Algunas aplicaciones de programador como Eclipse , NetBeans y Visual Studio de Microsoft y otros IDE incluyen partes integradas de estructura para facilitar la codificación.
Otras aplicaciones, como Macromedia Dreamweaver, también utilizan estos fragmentos de código para el desarrollo web .
Fragmentos en compiladores JIT
Los compiladores Just- In -Time ( JIT ) pueden "empalmar" secciones de código precompiladas como segmentos de código de objeto / código de máquina más largos . Esto reduce significativamente el tiempo de interpretación y simultáneamente acelera la ejecución.
Definición
En la práctica de programación, "fragmento" se refiere estrictamente a una parte del código fuente que un programa editor incluye literalmente en un archivo y es una forma de copiar y pegar programación . [2] Esta inclusión concreta contrasta con los métodos de abstracción, como funciones o macros , que son abstracciones dentro del lenguaje. Por lo tanto, los fragmentos se utilizan principalmente cuando estas abstracciones no están disponibles o no se desean, como en lenguajes que carecen de abstracción, o por claridad y ausencia de gastos generales.
Los fragmentos son similares a tener un preprocesamiento estático incluido en el editor y no requieren el soporte de un compilador. Por otro lado, esto significa que los fragmentos no pueden modificarse invariablemente después del hecho y, por lo tanto, son vulnerables a todos los problemas de la programación de copiar y pegar. Por esta razón, los fragmentos de código se utilizan principalmente para secciones simples de código (con poca lógica) o para texto repetitivo, como avisos de derechos de autor, prototipos de funciones, estructuras de control comunes o importaciones de bibliotecas estándar.
Ejemplo
Considere el proceso de intercambio de los valores de dos variables, x y y. Suponiendo una escritura débil y no preocuparse por la colisión de nombres, esto está representado por el código:
temp = xx = yy = temp
Cuando se inserta el fragmento, se solicita al programador los valores de los dos parámetros. Suponiendo que son de tipo foo
y bar
, que son los nombres reales de las variables que desean intercambiar, esto producirá el código:
temp = foofoo = barbar = temp
Si el fragmento se cambia posteriormente, digamos usar en __temp
lugar de temp
, no cambiará el código que ya se ha insertado, pero se utilizará en las inserciones posteriores del fragmento.
Un fragmento de esto podría representarse como:
temp = $ 1$ 1 = $ 2$ 2 = temp
Convenciones
Además de las capacidades de administración básicas descritas anteriormente, las funciones de administración de fragmentos se pueden clasificar de acuerdo con el alcance de la interactividad entre los fragmentos y el editor de texto o la aplicación que los aloja.
Estos grupos de funciones de fragmentos incluyen:
- fragmentos de texto sin formato o "estáticos"
- fragmentos interactivos o "dinámicos"
- fragmentos de secuencias de comandos
Los fragmentos estáticos consisten principalmente en texto fijo que el usuario puede elegir insertar en el documento actual. El usuario no puede especificar nada más, excepto quizás la posición del cursor relativa al texto recién insertado. Los fragmentos estáticos son similares a las macros simples .
Los fragmentos dinámicos consisten en texto fijo combinado con elementos dinámicos. El usuario puede especificar tanto el contenido de los elementos dinámicos como su posición en relación con el texto fijo, como parte de la elección de qué insertar en el documento actual. Los ejemplos de elementos dinámicos podrían ser variables como la fecha actual o la hora del sistema, o la entrada del usuario que se proporciona a través de una GUI, o la entrada de otra aplicación. (ver también: macro programable ).
Los fragmentos de secuencias de comandos constan de segmentos de código que se pueden ejecutar en un lenguaje de macros o en un lenguaje de secuencias de comandos . Los fragmentos de secuencias de comandos brindan el mayor grado de flexibilidad al usuario, aunque eso depende en cierta medida de los lenguajes de programación admitidos por el editor de texto y de si el lenguaje de programación es bien conocido o particular y exclusivo de ese editor específico.
El tipo de soporte de secuencias de comandos varía, pero puede incluir características como ejecutar comandos de shell , proporcionar un cuadro de diálogo GUI u otros métodos de interacción del usuario con el sistema operativo; otras aplicaciones; u otros subcomponentes de la propia aplicación de alojamiento.
Marcadores de posición de fragmentos
Los marcadores de posición son elementos dentro de un fragmento que el usuario u otro proceso externo debe proporcionar. Los valores de los marcadores de posición no se determinan hasta que se inserta el texto del fragmento durante una sesión de edición.
Los marcadores de posición pueden tener una sintaxis de marcado especial que permite al editor identificar los límites de los marcadores de posición en relación con el otro texto en el búfer de edición actual.
Otras aplicaciones emplean interfaces gráficas de usuario y cuadros de diálogo modales que permiten al usuario ingresar uno o más valores que se proporcionarán para los marcadores de posición.
Identificadores de marcador de posición
Los marcadores de posición generalmente se indican mediante algún carácter especial o secuencia de caracteres para distinguirlos del resto del texto del fragmento. Algunos sistemas permiten que los marcadores de posición de fragmentos se denominen identificadores . Los identificadores pueden ser útiles para admitir características tales como la duplicación de marcadores de posición o la transformación de marcadores de posición.
El ejemplo siguiente utiliza los identificadores 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 %} !
Duplicación de marcador de posición
Esto permite al usuario indicar que el valor proporcionado para un marcador de posición debe replicarse en varios lugares, en relación con todo el texto del fragmento programable. En el ejemplo anterior, el marcador de posición con nombre first_name
es un ejemplo de este uso.
Transformación de marcador de posición
Esto permite al usuario indicar que uno o más valores proporcionados para un marcador de posición deben replicarse y transformarse en otros lugares dentro del texto del fragmento programable. Por ejemplo, el usuario puede proporcionar un título de documento en una parte del fragmento y especificar que el título del documento debe repetirse en otros lugares, con la primera instancia en mayúsculas y las demás en minúsculas.
Funciones de programación de fragmentos
Para las aplicaciones que admiten fragmentos de script , la gama de funciones de programación admitidas varía. A continuación, se enumeran algunas de las funciones que se implementan comúnmente para los fragmentos programables.
Texto sin formato
Aunque el texto sin formato es una característica fundamental incluida incluso con aplicaciones que solo admiten fragmentos "estáticos" no programables, los fragmentos programables también se utilizan para trabajar con texto sin formato.
Sin embargo, una complicación común es que los entornos que admiten fragmentos programables a menudo tienen que hacer distinciones entre lo que cuenta como "texto sin formato" y lo que cuenta como "instrucciones de programación". Para complicar aún más esta distinción, está el hecho de que las aplicaciones que admiten fragmentos programables casi siempre incluyen soporte para el reconocimiento de múltiples lenguajes de programación, ya sea mediante el resaltado de sintaxis básica o la ejecución de comandos integrados.
Por estas y otras razones, emitir texto sin formato a partir de fragmentos programables casi siempre implica tener cuidado de evitar problemas con las colisiones de sintaxis y delimitadores .
Constantes y variables
Los fragmentos programables a menudo incluyen la capacidad de establecer un enlace a un ámbito de variable o espacio de nombres existente, desde el cual el usuario puede seleccionar cualquiera de varias constantes o variables. Estos pueden incluir valores como la dirección de correo electrónico del usuario que ha iniciado sesión actualmente en una máquina determinada, la fecha y hora actual del sistema o el valor de salida de una función.
Los fragmentos de secuencias de comandos a menudo se asocian con uno o más archivos actualmente activos. En consecuencia, las variables también pueden incluir variables de entorno y argumentos que especifican el nombre del archivo, la posición del cursor y el directorio principal, entre otras estadísticas relacionadas con los archivos en una sesión de edición actual.
Código interpretado
Los fragmentos de secuencias de comandos pueden permitir la ejecución de código en uno o más lenguajes de programación . Esto puede incluir uno o más idiomas independientes o un idioma que sea específico de la aplicación en la que está alojado el idioma.
Alternativas
La alternativa más básica a los fragmentos de código son las subrutinas . Las subrutinas pueden incorporarse en una biblioteca de software reutilizable y compartirse entre múltiples proyectos de programación.
Los patrones de diseño en la programación orientada a objetos y la programación funcional son técnicas que pueden permitir a los programadores evitar o reducir la práctica de insertar fragmentos repetidamente en diferentes piezas de código con ligeras variaciones cada vez. En los lenguajes de la familia C , a veces se utilizan preprocesadores para este propósito.
Ver también
- Autocompletar : aplicación que predice el resto de una palabra que escribe un usuario.
- Base de código
- Refactorización de código : reestructuración del código informático existente sin cambiar su comportamiento externo
- Gestión de contenido
- Pastebin : tipo de servicio de alojamiento de contenido en línea donde los usuarios pueden almacenar texto sin formato
- Álbum de recortes (Mac OS)
- Control de versiones : actividad de administrar la versión de uno o más archivos
- Widget web
Referencias
- ^ "Gedit / Plugins / Snippets" . Archivado desde el original el 25 de agosto de 2012 . Consultado el 9 de enero de 2010 . Ejemplo de la función en el editor de Gedit.
- ^ 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 2004 sobre ingeniería empírica de software, ISESE 2004: 19-20 de agosto de 2004, Redondo Beach, California . Los Alamitos, CA: IEEE . págs. 83–92. ISBN 978-0-7695-2165-7. OCLC 326620442 .
Para cada instancia de C&P, también notamos la relación entre un fragmento de código copiado y el código en otra parte de la base del código.
Ejemplos de fragmentos de código
- "15 útiles herramientas de fragmentos de código que le ayudarán a almacenar y administrar su biblioteca de códigos" . onextrapixel.com . 29 de septiembre de 2009 . Consultado el 18 de octubre de 2016 .
- "17 sitios de almacenamiento de fragmentos ingeniosos" . appstorm.net . Gartner, Inc. 11 de febrero de 2013 . Consultado el 18 de octubre de 2016 .
- "Más de 45 recursos y repositorios de fragmentos de código excelentes" . smashingmagazine.com . Revista Smashing . 21 de julio de 2009 . Consultado el 18 de octubre de 2016 .
- "Las aplicaciones más gustadas etiquetadas con 'fragmentos de código ' " . Alternativeto.net . Alternativa a . Consultado el 18 de octubre de 2016 .
- Una colección de fragmentos de código útiles , incluido código para Python, PHP, SQL y Bash.