Kaikki puhuvat GitHub Copilotista, ja olet varmasti kuullut siitä jo paljon. Käsissämme on mullistava työkalu, joka auttaa ohjelmoijia kirjoittamaan koodia tehokkaammin ja laadukkaammin. Voin siis luottavaisin mielin todeta, että tekoälyavusteinen ohjelmointi on tullut jäädäkseen. Jos GitHub Copilot ei ole sinulle vielä tuttu, se on tekoälypohjainen ohjelmointipari, joka hyödyntää koneoppimista ehdottaakseen koodikatkelmia ja täydentääkseen kokonaisia koodirivejä suoraan suosikki-IDE:ssäsi.
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.
Tässä blogissa tarkastelemme Copilotia Java-kehittäjän näkökulmasta ja kerromme, miten alla esitellyt käytännöt ja periaatteet voivat soveltua myös muihin ohjelmointikieliin.
Copilot vai ChatGPT?
Tekoälyn maailmassa käytössäsi on muutamia työtäsi tukevia työkaluja: ChatGPT ja GitHub Copilot.
ChatGPT on tekoälypohjainen kielimalli, joka tuottaa ihmismäistä kieltä ja käsittelee luonnollista kieltä esimerkiksi kääntämällä ja tiivistämällä tekstiä. ChatGPT voi tuottaa ihmismäisiä vastauksia erilaisiin kyselyihin, ja sitä on koulutettu monipuolisella tekstiaineistolla, kuten uutisartikkeleilla, kirjoilla ja verkkosivuilla.
Copilot puolestaan on tekoälypohjainen koodausavustaja, joka on koulutettu suurella määrällä koodidataa ja joka voi ajan myötä mukautua kehittäjän koodaustyyliin ja mieltymyksiin. Se analysoi jo kirjoittamaasi koodia ja nykyisen koodaussession kontekstia sekä ehdottaa niiden perusteella koodinpätkiä ja täydentää koodia automaattisesti. Lisäksi Copilot voi tarjota dokumentaatiota ja esimerkkejä, jotka auttavat ohjelmoijia kirjoittamaan parempaa koodia.
Copilot perustuu OpenAI:n GPT-3-luonnollisen kielen käsittelymalliin, joten se ymmärtää luonnollisella kielellä annettuja komentoja ja voi tuottaa niiden pohjalta koodia. Se tukee useita ohjelmointikieliä, kuten Javaa, Pythonia, JavaScriptiä, TypeScriptiä, Rubya, Goa ja Rustia.
Se kirjoittaa koodia kanssasi
Koodin täydentäminen nopeuttaa koodausta ehdottamalla pidempiä koodinpätkiä ja metodien nimiä muun sisällön perusteella, kuten domain-luokkiin perustuvia repository-luokkia. Koodikäytännöt säilyvät, kun työstät pidempiä koodinpätkiä ja nimeät metodeja. Koodin täydentämisestä on hyötyä, kun kirjoitat useimmissa projekteissa tarvittavaa koodia, kuten repository-käsittelyä. Sen avulla voit luoda perusrakenteet nopeasti ja keskittyä ratkaistavaan ongelmaan pitkien toteutusten kirjoittamisen sijaan.
Keskittyminen olennaiseen
Copilotin merkittävin tuottavuushyöty on, että se auttaa kehittäjiä keskittymään haasteisiin sen sijaan, että he kirjoittaisivat samaa koodia yhä uudelleen. Esimerkiksi mikropalvelua rakennettaessa ensimmäiset yli 100 riviä ovat aina lähes samanlaisia, ja niiden kirjoittaminen tuntuu niin yksinkertaiselta, että sen osaisi apinakin. Ne on silti kirjoitettava joka kerta eri tavalla datamallin ja muiden projektikohtaisten yksityiskohtien vuoksi – etenkin projekteissa, joissa rakennetaan useita mikropalveluita. Copilotilla tämän voi luoda helposti automaattisesti, jolloin kehittäjä voi keskittyä analyyttisiin haasteisiin ja luovaan ongelmanratkaisuun työlään boilerplate-koodin kirjoittamisen sijaan. Sitä ei voi vain kopioida ja liittää paikalleen.
Parhaat käytännöt käytössä
Kun tuotetta kehitetään laajemmassa mittakaavassa, kehittäjien välillä voi olla vaihtelua koodauskäytännöissä. Käytännöissä voi myös olla pieniä virheitä, kuten sisennyksiin tai välilyönteihin liittyviä poikkeamia. Javassa on laajasti käytettyjä ja yleisesti hyväksyttyjä käytäntöjä: esimerkiksi luokkien nimet alkavat isolla alkukirjaimella, kun taas metodit ja metodien nimet pienellä alkukirjaimella, kuten class Car ja method getTires().
Copilot helpottaa koodikäytäntöjen ylläpitämistä merkittävästi ja parantaa siten koko tiimin koodin laatua. Se auttaa myös kirjoittamaan paremmin testattavaa koodia, koska sitä on koulutettu parhaiden käytäntöjen mukaisilla malleilla. Lisäksi Copilot helpottaa koodikatselmointeja, sillä koodikäytäntöjä noudatetaan jo valmiiksi ja katselmoinneissa voidaan keskittyä toiminnallisuuteen käytäntöjen sijaan.
Se ei edellytä parhaiden käytäntöjen käyttöä, mutta koska sitä on koulutettu niiden avulla, sen ehdotukset noudattavat parhaita käytäntöjä.
Sinun on ymmärrettävä, mitä teet
Oletko kirjoittanut kymmeniä metodeja ja huomannut, ettei sinulla ole yhtään yksikkötestiä? Jälleen jokaisen metodin testaaminen erikseen on työlästä eikä välttämättä mieluisinta tekemistä. Tässä tapauksessa sinun on kuitenkin tiedettävä, mitä teet. Saatat kirjoittaa Java-koodia tiukasti säännellyssä ympäristössä, kuten pankki- tai terveydenhuoltoalalla. Testien olemassaolo on yksi asia, mutta merkitykselliset testit ovat toinen. Säännellyissä projekteissa jonkun on aina myös ajettava tällaiset testit oikein.
Copilotin avulla voit täyttää automaattisesti testitapausten boilerplate-koodin kaikille olemassa oleville metodeille. Sinun on silti keskityttävä siihen, mitä testaat. Copilot helpottaa testaamista, mutta se ei ajattele puolestasi. Siksi sinun on tiedettävä, mitä teet, jotta voit kirjoittaa merkityksellisiä ja toimivia testejä. Joissakin tapauksissa olemme esimerkiksi kohdanneet automaattisesti luoduissa testeissä nollalla jakamisen virheitä.
TL;DR: GitHub Copilot on loistava avustaja
GitHub Copilot merkitsee uuden aikakauden alkua kehittäjille! Toisin kuin aiemmat IDEt, jotka perustuvat dokumentaation pohjalta tehtävään metodien nimien perusautomaattitäydennykseen, tämä tekoälyavusteinen työkalu on merkittävä harppaus eteenpäin. Se ja muut vastaavat työkalut mullistavat koodaajien työn, joten jos mietit, kannattaako sitä kokeilla, vastaus on kyllä.
- Software development
- CI/CD
Subscribe to our newsletter
Related blogs