Blog

Förändra Java-utvecklingsflöden med GitHub Copilot

AUG 2, 2023

Alla pratar om GitHub Copilot, och jag är säker på att du också har hört talas om det. Det vi har i våra händer är ett banbrytande verktyg som hjälper programmerare att skriva kod mer effektivt och med högre kvalitet. Därför kan jag med säkerhet säga att AI-assisterad programmering är här för att stanna. För dig som inte redan känner till det är GitHub Copilot en AI-baserad parprogrammerare som använder maskininlärning för att föreslå kodavsnitt och komplettera hela kodrader direkt i din favorit-IDE.

Antti Kalliokoski

Antti is a software architect who has been writing code for over 30 years and is still learning new things. He adores modern open source ideology and competence sharing.

I den här bloggen diskuterar vi Copilot ur en Java-utvecklares perspektiv och förklarar hur metoderna och principerna nedan även kan tillämpas på andra språk.

Copilot eller ChatGPT?

I världen av artificiell intelligens finns det ett par verktyg som kan hjälpa dig i arbetet: ChatGPT och GitHub Copilot.

ChatGPT är en AI-språkmodell som genererar människoliknande språk och utför uppgifter inom naturlig språkbehandling, till exempel översättning och sammanfattning. ChatGPT kan ge människoliknande svar på olika frågor och har tränats på en bred mängd textdata, såsom nyhetsartiklar, böcker och webbsidor.

Copilot är däremot en AI-driven kodningsassistent som har tränats på stora mängder koddata och med tiden kan anpassa sig efter en utvecklares kodstil och preferenser. Den fungerar genom att analysera koden du redan har skrivit och sammanhanget i din aktuella kodningssession för att föreslå kodfragment och automatiskt komplettera din kod. Dessutom kan Copilot erbjuda dokumentation och exempel som hjälper programmerare att skriva bättre kod.

Copilot bygger på OpenAI:s modell för naturlig språkbehandling, GPT-3, vilket innebär att den kan förstå kommandon på naturligt språk och generera kod som svar på dem. Den har stöd för flera programmeringsspråk, bland annat Java, Python, JavaScript, TypeScript, Ruby, Go och Rust.

Den skriver kod tillsammans med dig

Kodkomplettering gör det snabbare att koda genom att föreslå längre kodfragment och metodnamn utifrån annat innehåll, exempelvis förslag på repository-klasser baserat på domänklasser. Kodkonventioner följs även när du arbetar med längre kodfragment och metodnamngivning. Kodkomplettering kan vara användbart när du skriver kod som krävs i de flesta projekt, till exempel för repository-hantering. Det gör att du snabbt kan skapa grundläggande strukturer och fokusera på problemet du löser i stället för att skriva omfattande implementationer.

Fokusera på det som är viktigt

Den största produktivitetsvinsten med Copilot är att utvecklare kan fokusera på utmaningar i stället för att skriva samma kod om och om igen. Till exempel är de första >100 raderna alltid desamma när du bygger mikrotjänster, och det känns som att vem som helst skulle kunna göra det. Men koden behöver skrivas annorlunda varje gång på grund av datamodellen och andra projektspecifika detaljer, ofta i ett projekt där flera mikrotjänster ska byggas. Med Copilot kan detta enkelt genereras automatiskt, så att utvecklaren kan fokusera på de specifika analytiska utmaningarna och kreativ problemlösning i stället för att skriva tidsödande boilerplate-kod som inte går att kopiera och klistra in.

Att ha beprövade metoder på plats

När du utvecklar en produkt i större skala kan kodkonventionerna skilja sig mellan olika utvecklare, eller åtminstone innehålla små fel i till exempel indrag, blanksteg och liknande. För Java finns det etablerade och allmänt accepterade konventioner, som att klasser börjar med versal och metoder och metodnamn med gemen, till exempel class Car och method getTires().

Copilot gör det mycket enklare att upprätthålla kodkonventioner, vilket ger bättre kodkvalitet för hela teamet. Det hjälper också till att skriva mer testbar kod eftersom det har tränats på modeller som följer beprövade metoder. Dessutom blir kodgranskningar enklare eftersom kodkonventionerna redan följs, och granskningarna kan fokusera på funktionalitet i stället för konventioner.

Copilot kräver inte att du använder beprövade metoder, men eftersom det har tränats på dem bygger förslagen på beprövade metoder.

builder
template

Du behöver förstå vad du gör

Har du skrivit mängder av metoder och sedan insett att du inte har några enhetstester på plats? Att skriva tester separat för varje metod är återigen tidsödande och inte den roligaste uppgiften. I det här fallet behöver du dock veta vad du gör. Du kanske skriver Java-kod i en hårt reglerad miljö, till exempel inom bank eller sjukvård. Att ha tester på plats är en sak, men att ha meningsfulla tester är en annan. I reglerade projekt måste någon alltid köra sådana tester på rätt sätt.

Med hjälp av Copilot kan du enkelt automatiskt fylla i boilerplate-koden för testfall för alla befintliga metoder. Men du behöver fortfarande fokusera på vad det är du testar. Copilot gör testning enklare, men tänker inte åt dig. Därför behöver du veta vad du gör för att skriva meningsfulla tester som fungerar. I vissa fall har vi till exempel stött på division-med-noll-fel i automatiskt genererade tester.

Kort sagt: GitHub Copilot är en utmärkt assistent

GitHub Copilot markerar början på en ny era för utvecklare! Till skillnad från tidigare IDE:er, som förlitar sig på grundläggande autokomplettering av metodnamn baserat på dokumentation, är detta AI-assisterade verktyg ett stort steg framåt. Det och andra liknande verktyg förändrar hur programmerare arbetar, så om du undrar om du borde testa det är svaret ja.

  • Software development
  • CI/CD

Subscribe to our newsletter