Guía paso a paso para crear tus propios Gems en Gemini (con ejemplo real para programadores)

Imagen
Si usas Gemini a diario para programar, escribir código o resolver dudas técnicas, seguro que en algún momento te has cansado de repetir el mismo contexto una y otra vez: "actúa como un experto en X", "responde siempre en este formato", "usa este stack de tecnologías"... Ahí es exactamente donde entran los Gems . Los Gems son básicamente asistentes personalizados dentro de Gemini: versiones del modelo con instrucciones fijas, un tono definido y (opcionalmente) archivos de referencia, listas para usar cuando las necesites sin tener que reescribir el prompt cada vez. Es la forma que tiene Google de darte algo parecido a los "Custom GPTs" o a los proyectos de Claude, pero integrado en su propio ecosistema. En este artículo vamos a crear, paso a paso, un Gem pensado específicamente para programadores: un "Code Reviewer" que revisa fragmentos de código, detecta errores comunes, sugiere mejoras de rendimiento y siempre responde con un forma...

Parámetros opcionales en funciones de JavaScript

El desarrollo web siempre tiene dos interacciones: la que se produce en el lado del servidor y la que se produce en el lado del cliente. Esta segunda cada vez tiene más relevancia para conseguir una mejor experiencia del usuario y JavaScript es el responsable de ésto.
JavaScript es una de esas tecnologías que se pensó para abordar pequeños problemas, pero que por cuestiones de compatibilidad y aceleración tecnológica, se ha convertido en una tecnología versátil a la vez que necesaria para poder afrontar las exigencias de la actualidad.
En lenguajes como PHP, podemos hacer uso de parámetros opcionales (aquí explicaba su uso al hablar de cómo podíamos imitar la sobrecarga de funciones en el curso de PHP orientado a objetos), por ejemplo:
function crearPersona($nombre = "")
Y sus respectivas llamadas:
crearPersona("Javier");
crearPersona();
Sin embargo, en JavaScript no tenemos esta posibilidad, aunque al igual que ocurría con la sobrecarga de funciones en PHP, podemos imitarlo. Veamos cómo.
Usando un condicional con undefined
Empezamos por la forma larga, que es la que menos me gusta:
function crearPersona(nombre)
{
  if(nombre == undefined)
  {
    // si no se especifica nombre
    nombre = "Javier";
  }
  else
  {
     // si se especifica
  }
}
Comprobando y asignando en una sola línea
Este método “largo” se puede reducir muchísimo, ganando en legibilidad y comodidad. ¿Cómo? La idea es “si la variable no es definida, toma el valor por defecto, si no, toma el que traes de la llamada”. Podemos reducir esta sentencia a la siguiente línea de código:
function crearPersona(nombre)
{
  var nombre = nombre || "Javier";
}
Varios parámetros
Al igual que ocurre en otros lenguajes, al haber varios parámetros, los parámetros opcionales tienen que estar siempre al final y habrá que tener cuidado en la forma en que los llamamos. Es decir, si tenemos cuatro parámetros y tres son opcionales, tendrán que ser los últimos y nos limitaremos a obviar los parámetros del final. Si no respetáramos esta regla, el intérprete en este caso y el compilador en otras, no sabría qué parámetros hemos quitado y cuáles hemos dejado.
Para evitar este problema y darle mayor claridad a todo este asunto, podemos usar jQuery y su función extend. ¿Cómo?
// aquí rellenamos los valores para nuestra llamada
var params = {
    nombre: "Francisco Javier",
    apellidos: "Carazo Gil",
    web: "reddeautores.com"
};
crearPersona(params);
function crearPersona(params) {
    // valores por defecto
    var porDefecto = {
        nombre: "Nacho",
        apellidos: "López",
        web: "linuxhispano.net",
        edad: 26 // por defecto
    }
    $.extend(porDefecto, params);
}
De esta forma conseguimos:
  • Poder usar el orden que queramos al llamar a los parámetros
  • Usar tantos parámetros opcionales como necesitemos
  • Clarificar la llegada de parámetros a las funciones

Comentarios

Entradas populares de este blog

Cómo solucionar MySQL Error 1045: Access Denied for User (guía definitiva 2026)

El vibe coding: ¿el fin de los programadores o el inicio de una nueva era?

El USB-C de la IA: cómo MCP pasó de protocolo de Anthropic a infraestructura de toda la industria en 16 meses