Creare richieste valide per GitHub Copilot

Completato

Un prompt è un'istruzione in linguaggio naturale che indica a GitHub Copilot cosa si vuole fare. Le richieste possono essere usate per porre domande, comunicare richieste o descrivere le attività.

Ad esempio, i prompt seguenti rappresentano una domanda, una richiesta e una descrizione dell'attività.

Question: How do I create a button that submits a form?

Request: Add a button that opens a modal dialog. The button should be blue with rounded corners.

Task: Build a product page that displays a product title, product image, product description, and price. Product information should be fetched from the attached ProductsList.json file. The price should be formatted as currency. The page should also include a button to add the product to the cart.

La qualità della richiesta influisce direttamente sulla qualità della risposta di GitHub Copilot.

Cosa caratterizza un buon prompt?

La creazione di prompt di alta qualità è essenziale per ottenere il massimo valore da GitHub Copilot. Le strategie seguenti consentono di creare richieste che generano risposte più accurate, pertinenti e utili.

Inizia con una richiesta generica, quindi diventa più specifico

Quando si scrive una richiesta di Copilot, iniziare con una descrizione generale dell'obiettivo o dello scenario, quindi fornire requisiti specifici. Questo approccio offre a Copilot il contesto necessario assicurando al tempo stesso che vengano affrontate le esigenze dettagliate.

Example:

Write a function that tells me if a number is prime.

The function should take an integer and return true if the integer is prime.

The function should error if the input is not a positive integer.

Fornire esempi concreti

Gli esempi sono uno dei modi più efficaci per comunicare la finalità con Copilot. È possibile fornire dati di input di esempio, output previsti e persino implementazioni di esempio per guidare la comprensione dell'intelligenza artificiale.

Example:

Write a function that finds all dates in a string and returns them in an array. Dates can be formatted like:

- 05/02/24
- 05/02/2024
- 5/2/24
- 5/2/2024
- 05-02-24
- 05-02-2024
- 5-2-24
- 5-2-2024

Example usage:
findDates("I have a dentist appointment on 11/14/2023 and book club on 12-1-23")

Expected return: ["11/14/2023", "12-1-23"]

Suddividere attività complesse in passaggi più semplici

Quando si riscontra un'attività complessa o di grandi dimensioni, scomporrla in componenti più piccoli e gestibili. Questo approccio porta a risultati migliori e rende più semplice eseguire il debug e perfezionare i singoli pezzi.

Esempio: invece di chiedere a Copilot di generare un puzzle di ricerca di parole completo, suddividerlo:

  1. Write a function to generate a 10 by 10 grid of letters
  2. Write a function to find all words in a grid of letters, given a list of valid words
  3. Write a function that uses the previous functions to generate a 10 by 10 grid containing at least 10 words
  4. Update the previous function to print the grid and 10 random words from the grid

Eliminare l'ambiguità

Evitare riferimenti vaghi e termini ambigui che potrebbero essere interpretati in più modi. Sii esplicito su a cosa ti stai riferendo e su cosa desideri che Copilot faccia.

Esempi scarsi:

  • "Che cosa fa questo?" (non chiaro a cosa si riferisce "questo").
  • "Correzione del bug" (non specifica quale bug o come risolverlo).

Esempi migliori:

  • "Che cosa fa la funzione createUser?"
  • "Che cosa fa il codice nell'ultima risposta?"
  • "Correggere l'errore di convalida nel campo di input del messaggio di posta elettronica".

Considerazioni sulla libreria:

  • Se si usa una libreria non comune, descriverne lo scopo.
  • Per librerie specifiche, includere istruzioni import o specificare la libreria da usare.

Fornire un contesto pertinente

Aiutare Copilot a comprendere la struttura e le intenzioni del progetto gestendo in modo efficace l'ambiente di sviluppo.

Nel tuo IDE:

  • Aprire i file pertinenti e chiudere quelli non correlati.
  • Evidenziare sezioni di codice specifiche a cui si desidera che Copilot faccia riferimento.
  • Usa partecipanti alla chat come @workspace in Visual Studio Code o @project negli IDE JetBrains.

In Copilot Chat:

  • Fare riferimento a file o blocchi di codice specifici.
  • Allegare la documentazione o le specifiche pertinenti.
  • Usare percorsi di file chiari e nomi di funzioni chiari.

Iterare e affinare

Non aspettatevi risultati perfetti al primo tentativo. Copilot funziona meglio quando si interagisce in una conversazione iterativa, affinando le richieste in base alle risposte ricevute.

Strategie per l'iterazione:

  • Se si utilizzano suggerimenti in linea, cancellarli e tentare di nuovo con un prompt modificato.
  • In Copilot Chat fare riferimento alle risposte precedenti e richiedere modifiche specifiche.
  • Basarsi su soluzioni parziali richiedendo miglioramenti incrementali.

Mantenere la cronologia delle conversazioni pertinenti

La chat di Copilot usa la cronologia delle conversazioni per comprendere il contesto, quindi gestire questa cronologia in modo strategico.

Procedure consigliate:

  • Avviare nuovi thread per attività o progetti diversi.
  • Eliminare richieste irrilevanti o non riuscite che potrebbero confondere le risposte future.
  • Mantenere le conversazioni incentrate sulle funzionalità correlate.

Segui le procedure di scrittura del codice consigliate

La qualità della codebase esistente influisce sulla capacità di Copilot di generare suggerimenti appropriati. Mantenere standard elevati nel codice per ottenere una migliore assistenza per l'intelligenza artificiale.

Fattori di qualità del codice:

  • Usa stili e modelli di codice coerenti.
  • Scegliere nomi descrittivi per variabili e funzioni.
  • Aggiungere commenti significativi per spiegare la logica complessa.
  • Struttura il codice in componenti modulari ben delimitati.
  • Includere test unitari completi.

Note

È possibile chiedere a Copilot di migliorare la qualità del codice richiedendo commenti sul codice, suggerimenti di refactoring, o suddividendo funzioni di grandi dimensioni in parti più piccole e gestibili.

I buoni prompt sono:

  • Chiaro: descrivere esattamente ciò che vuoi.
  • Specifico: includere layout, comportamento o dettagli di stile.
  • Contestuale: fare riferimento a codice o struttura esistente.

Iterazione sui prompt

Se la risposta iniziale di GitHub Copilot non è allineata alle aspettative, potrebbe essere necessario eseguire l'iterazione al prompt. Prendi in considerazione queste strategie:

  • Modificare la richiesta per essere più specifica.
  • Aggiungere contesto alla chat che chiarisca gli obiettivi o i requisiti.
  • Usare Copilot Chat per porre domande di completamento basate sulle risposte precedenti.

Valutazione e risposta ai suggerimenti di Copilot

Per una codifica efficace delle vibrazioni, è fondamentale comprendere come valutare i suggerimenti di Copilot. Non tutti i suggerimenti saranno perfetti e sapere quando accettare, rifiutare o modificare le risposte migliorerà significativamente l'esperienza di sviluppo.

Quando accettare suggerimenti

Accettare i suggerimenti di Copilot quando:

  • Soddisfare i requisiti: il codice esegue esattamente le operazioni richieste.
  • Seguire le procedure consigliate: Usa modelli appropriati, convenzioni di denominazione e struttura.
  • Sono ben strutturati: il codice è leggibile, gestibile e formattato correttamente.
  • Includere una corretta gestione degli errori: i casi limite e i potenziali errori vengono affrontati.
  • Corrisponde allo stile del progetto: coerente con i modelli e le convenzioni della codebase esistenti.

Esempio di suggerimento valido da accettare:

Sollecito: "Creare una funzione per convalidare gli indirizzi di posta elettronica"

Copilot suggerisce:

function validateEmail(email) {
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    if (typeof email !== 'string') {
        throw new Error('Email must be a string');
    }
    return emailRegex.test(email.toLowerCase());
}

Questo suggerimento deve essere accettato perché include la convalida dell'input, la gestione degli errori e usa un modello regex ragionevole.

Quando rifiutare i suggerimenti

Rifiutare i suggerimenti di Copilot quando:

  • Non affrontare il tuo prompt: il codice risolve un problema diverso da quello richiesto.
  • Contenere vulnerabilità di sicurezza: usare procedure non sicure o esporre dati sensibili.
  • Sono eccessivamente complesse: attività semplici implementate con complessità non necessaria.
  • Utilizzare metodi deprecati: basarsi su API obsolete.
  • Mancanza di gestione degli errori: non tenere conto di potenziali scenari di errore.
  • Violare gli standard di codifica: non seguire le procedure stabilite dal team.

Esempio di suggerimento da rifiutare:

Sollecito: "Creare una funzione di convalida della password sicura"

Suggerimento scarso:

function validatePassword(password) {
    return password.length > 6;
}

Questa operazione deve essere rifiutata perché è troppo semplice per i requisiti di sicurezza e non convalida correttamente la complessità della password.

Quando modificare i suggerimenti

Modifica i suggerimenti di Copilot quando:

  • Sono per lo più corretti ma sono necessari aggiustamenti: la logica di base è corretta, ma i dettagli necessitano di modifiche.
  • Sono necessarie funzionalità aggiuntive: la funzionalità di base è valida, ma richiede miglioramenti.
  • Problemi di stile secondari: il codice funziona ma non corrisponde alle preferenze di formattazione.
  • Richiedi nomi di variabili diversi: la logica è corretta, ma la denominazione potrebbe essere migliorata.
  • Sono necessarie ottimizzazioni delle prestazioni: funzionale, ma potrebbe essere più efficiente.

Esempio di suggerimento da modificare:

Copilot suggerisce:

function calculateTotal(items) {
    let total = 0;
    for (let i = 0; i < items.length; i++) {
        total += items[i].price;
    }
    return total;
}

La modifica per migliorare la leggibilità e il codice JavaScript moderno:

function calculateTotal(items) {
    return items.reduce((total, item) => total + item.price, 0);
}

Strategie per migliorare i suggerimenti

Quando un suggerimento non è corretto, provare questi approcci:

Perfezionare la richiesta:

  • Aggiungere requisiti più specifici.
  • Includere esempi di input/output previsti.
  • Specificare lo stile di programmazione o il framework in uso.

Richiedere modifiche:

  • "Rendere la funzione precedente più affidabile con la gestione degli errori".
  • "Semplificare il codice appena scritto."
  • "Aggiungere tipi TypeScript alla funzione precedente".

Compilare in modo incrementale:

  • Iniziare con una versione di base e richiedere miglioramenti.
  • Aggiungere funzionalità una alla volta invece di richiedere tutto contemporaneamente.
  • Testare ogni iterazione prima di passare al miglioramento successivo.

Tip

Quando si modificano i suggerimenti, mantenere le parti che funzionano correttamente ed essere specifiche su ciò che deve cambiare. Questo consente a Copilot di comprendere le preferenze e fornire suggerimenti futuri migliori.

Summary

La creazione di prompt efficaci per GitHub Copilot è essenziale per massimizzarne il potenziale nel vibe coding. Partendo dalle descrizioni generali, fornendo esempi concreti, suddividendo attività complesse e mantenendo una comunicazione chiara, è possibile guidare Copilot a generare codice di alta qualità che soddisfi le proprie esigenze. L'iterazione delle richieste e la comprensione di come valutare i suggerimenti miglioreranno ulteriormente l'esperienza di sviluppo, consentendo di sfruttare l'assistenza di intelligenza artificiale in modo efficace mantenendo il controllo sul processo di codifica.