Hva er de beste Golang IDEene?

Go er et fantastisk programmeringsspråk. Det kommer også med en omfattende verktøykjede. Mange utviklere bruker bare enkle tekstredigerere med eller uten plugins for å skrive Go-kode, men mange andre foretrekker å bruke riktige IDEer (integrerte utviklingsmiljøer). 

I denne opplæringen lærer du om den nåværende tilstanden for Go IDEs og er klar til å velge våpen.

Hvorfor bruke en IDE?

Jeg var alltid en stor fan av IDEer. Tidlig i karrieren brukte jeg Microsofts Visual Studio for C / C ++-utvikling og C #. Jeg har brukt NetBeans for en kort stint av Java-utvikling. Jeg har brukt JetBrains PyCharm for Python-utvikling, og i dag bruker jeg JetBrains 'Gogland for Go-utvikling.

Jeg jobber vanligvis på store programvare systemer som består av flere prosjekter med tusenvis av filer. Jeg trenger mye hjelp med store kodebaser. Her er de viktigste grunnene til at jeg liker IDEer så mye:

Integrert kode organisasjon og navigasjon

Med en god IDE kan du organisere koden din hierarkisk, se og navigere den med letthet, og søk også koden din raskt. IDE vil gjøre mye mer enn bare tekstsøk og lar deg filtrere basert på språkspesifikke konstruksjoner (for eksempel bare vis klasser eller grensesnitt med et bestemt navn).

Integrert testing

Integrert testing er også avgjørende. Jeg bruker mesteparten av min utviklingstid på tester - enten skrive dem, prøve å få dem til å passere, eller undersøke hvorfor tester plutselig mislyktes. En god IDE med integrert testing vil la deg kjøre tester på en selektiv måte (alt, bare ett prosjekt, bare mislykkede tester fra forrige runde), vil markere feil, og lar deg hoppe raskt til riktig sted i koden for å fikse eventuelle problem.

Integrert feilsøking 

Dette er trolig den viktigste funksjonen for meg. Jeg elsker integrerte debuggere. Jeg vil kunne legge til et brytepunkt (inkludert betingede brytepunkter), se stablingssporet og se variablene i hver ramme. 

For bonuspoeng (takk PyCharm), liker jeg å ha en interaktiv konsolløkt når et brytepunkt treffer. Alternativene til printf debugging (krever endring av koden og gjenoppbygging) eller visning av loggfiler (ofte ikke nok granularitet eller mye støy) er mye mer frustrerende og mindre produktive. Selv frittstående debuggere som gdb kommer ikke nær produktiviteten til en god integrert debugger.

hogland

Gogland er min nåværende Golang IDE. Det er et veldig ungt produkt, fortsatt i tidlig forhåndsvisning, men jeg anser det fortsatt som den mest komplette og integrerte Go IDE. Den er bygget på det sterke grunnlaget for JetBrains, så det er ekstremt robust og funksjonelt.

Kodeditor og assistanse

Goglands kode redaktør er fantastisk. Her er noen av dens evner:

  • Tabbed-grensesnitt
  • Gjennomføring av smart kode
  • Inspeksjoner og hurtige reparasjoner
  • refactorings
  • Rask navigasjon
  • Rask popup for dokumentasjon, definisjon, bruk, struktur, etc..
  • Kodegenerering (for eksempel implementere grensesnitt)
  • Registrere rekursive samtaler
  • Viser typen av ethvert uttrykk
  • Uthevingsfunksjonens utgangspunkter
  • Parameterhint 

debugger

Gogland debugger er utmerket. Den er bygget på toppen av Delve, som brukes av andre IDEer vi dekker også. Den bruker de kjente JetBrains feilsøkingskonfigurasjonene for å kontrollere alt om en feilsøkingsrunde, for eksempel det utførte binære, miljøvariablene, arbeidskatalogen og kommandolinjeprinsene. 

Du kan angi bruddpunkter, betingede bruddpunkter og klokker. Når et bruddpunkt blir rammet, kan du observere stakkespor og de lokale variablene i hver ramme. Dessverre vises globale variabler ikke og er ofte nødvendige i Go.

Jeg hadde ett problem med debuggeren hvor breakpoints blir truffet for tidlig! Vurder følgende Go-kode:

x: = 1 y: = 3 z: = x + y fmt.Println (z)

Noen ganger, hvis jeg legger et bruddpunkt på den siste linjen, ville det treffe, men verdien av z ville være 0, i stedet for 4. Hvordan kan det være? Det viser seg at debuggeren ble forvirret på en eller annen måte. Hvis jeg fortsetter å gå gjennom koden, hopper den tilbake til z: = x + y, tilordne 4 til z, og gå deretter til siste linje og skriv ut 4 på skjermen. 

Jeg kastet bort et par timer på å prøve å feilsøke et komplisert koden, ikke skjønner at jeg ikke alltid fikk det riktige bildet. Til slutt fant jeg ut hva som skjedde og bare ignorert den falske tidlige utløsningen av breakpoints.

Jeg er ikke sikker på om det er et Delve- eller Gogland-problem, men jeg er sikker på at de vil fikse det snart. Husk at det bare er en tidlig forhåndsvisning.

Testløper

Testløperen lar deg kjøre, stoppe og starte testene. Jeg var i stand til å bruke den vellykket til å kjøre og feilsøke enhetstester, samt integreringstester ved hjelp av både Gos testpakke og et BDD-testrammebilde som ginkgo.

Go Tools

Go kommer med ulike verktøy, og Gogland integrerer dem rett inn i IDE. Du kan påkalle verktøy fra menyen "Kode | Go Tools". Den innebygde koden formatering av Gogland benytter standard "go fmt" verktøyet.

Versjonskontroll

Gogland erverver det modne kildestyringsstyringssystemet for andre JetBrains produkter. Jeg har brukt primært git support, som tillater styring av flere prosjekter, utmerket visning av grener, flere endringssett og mer. Andre kildekontrollsystemer som Mercurial og SVN støttes også, via ekstra plugins.

Integrert Terminal  

Gogland gir en innebygd terminal hvis du trenger å kjøre noen kommandoer. Det er hyggelig å være innenfor IDE og kunne se på eller kopiere fra / til redigeringsrutene uten å bytte vinduer helt.

utvidelses~~POS=TRUNC

Gogland kommer med tonnevis av innebygde funksjoner, men det er fullt uttrekkbart, og mange av de innebygde funksjonene er faktisk forhåndsinstallerte plugins. Du kan installere mange nyttige plugins, og du kan utvikle dine egne plugins hvis du ønsker det.

Visual Studio Code

Visual Studio Code er en utvidbar åpen kildekoden editor utviklet primært av Microsoft (med mange bidrag fra samfunnet). Den er basert på Electron, som igjen er basert på Chromium. Visual Studio Code støtter mange språk og opprinnelig fokusert på webutvikling. Den har sterk støtte for Go-utvikling, inkludert integrering av alle Go-verktøyene og Delve debuggeren via en dedikert utvidelse. Du må installere noen Go-pakker og verktøy for å komme i gang.

Visual Studio Code tilbyr også innebygd git-integrasjon, hierarkisk mappe / filutforsker og et tabbedgrensesnitt.

IntelliSense-støtten (autofullføring, viser parametertyper og dokumentasjon) er flott og gir en veldig hyggelig redigeringsopplevelse. Den integrerte debuggeren (bruker også Delve under hetten) er veldig godt utført og samsvarer med Goglands debugger.

Visual Studio Code er veldig responsiv og rask. Her er dens store funksjonsliste:

  • Komplettlister (ved hjelp av gokode)
  • Signaturhjelp (ved hjelp av gogetdoc eller godf + godoc)
  • Tekstutdrag
  • Rask info (ved hjelp av gogetdoc eller godf + godoc)
  • Gå til Definisjon (ved hjelp av gogetdoc eller godf + godoc)
  • Finn referanser (bruker guru)
  • Referanser CodeLens
  • Filoversikt (ved hjelp av oversikt)
  • Søkesymbolsøk (ved hjelp av go-symboler)
  • Gi nytt navn (ved hjelp av gorename. Merk: For å angre etter omdøpe for å fungere i Windows, må du ha diff-verktøy i din bane)
  • Bygg-på-lagre (bruk go build og go test)
  • Lint-on-save (ved hjelp av golint eller gometalinter)
  • Format (bruker goreturns eller goimports eller gofmt)
  • Generer enhetstester skjelett (bruker testene)
  • Legg til import (bruker gopkgs)
  • Legg til / fjern merker på strukturfelt (ved hjelp av gomodifytags)
  • Semantisk / syntaktisk feilrapportering mens du skriver (ved hjelp av typegodkjenning)
  • Kjør test under markøren, i gjeldende fil, i gjeldende pakke, i hele arbeidsområdet (ved bruk av go-test)

LiteIDE

LiteIDE er veldig uvanlig. Det var den første seriøse Go IDE, startet tilbake i 2011/2012, og den fortsetter å være sterk. Det er et C ++ Qt-program, og det har et tilpasset utseende. I likhet med Gogland og Visual Studio Code, bruker den Go-verktøyene og Delve debugger til å tilby språktjenester (selv om det startet med gdb debugger før Delve var klar). 

Totalt sett er det en fullverdig IDE, men det føles ikke så polert. Så vidt jeg kan fortelle, er dette ganske mye en enmans innsats, noe som er ekstraordinært. Her er en sammenbrudd av LiteIDE-funksjonene.

Kjernefunksjoner

  • System miljøledelse
  • Konfigurerbare bygge kommandoer
  • Enkelt og åpent feilsøkingssystem (støtter både gdb og Delve)
  • Kate format for automatisk ferdigstillelse og tema
  • Konfigurerbar automatisk fullføring med WordApi
  • MIME type basert system
  • Støtte for plugin
  • Quick Open

Golang Support

  • Pakkebrowser
  • Klassevisning og disposisjon
  • Dokumentleser
  • Gokode støtte
  • GOPATH API-indeksen
  • Kode navigasjon
  • Finn bruksområder
  • Kode Refactor
  • Gå lekeplass

Ekstra støtte

  • Markdown
  • JSON
  • Golang Present

Bred

Wide er interessant fordi det er en dedikert Golang web-basert IDE. Fokuset er på samarbeidsutvikling, og den er laget for lag. Utvikleren er kinesisk, og mye av dokumentasjonen er på kinesisk, så det kan ikke være egnet for alle. Det er definitivt ikke på nivå med de andre IDEene når det gjelder egenskaper og integrasjon.

Gå til plugins for andre IDEer

Det er mange generelle IDEer som støtter mange programmeringsspråk og har lagt til støtte for Go-språket også. Jeg er ikke en stor fan av slike miljøer. Jeg tror at et integrert miljø må ha dypt integrerte språkspesifikke kroker. Det er vanskelig å implementere som en enkel plugin (selv om du kanskje hevder at dette er akkurat hva VS Code gjør). 

Noen populære utviklingsmiljøer som har lagt til Go-støtte, er:

  • Formørkelse
  • Atom
  • brak~~POS=TRUNC
  • Komodo
  • Cloud 9

Tekstredigerere

Go er et enkelt språk. Mange mennesker føler seg veldig produktive bare ved hjelp av en tekstredigerer, muligens med noen ekstra Go-plugins. Jeg ser ikke de virkelig integrerte utviklingsmiljøene. Men det er fornuftig hvis du har mange års erfaring med tekstredigeringsprogrammet, du har allerede tilpasset det til din smak, og du bruker det til mange andre oppgaver. Her er en liste over noen av de mer populære tekstredigererne og deres Go-plugins:

Emacs

Med følgende plugins: 

  • go-modus
  • GoFlyMake Flymake-stil syntaks sjekker for Go
  • go-errcheck.el Errcheck-integrasjon for Emacs

Sublim tekst 

Med GoSublime-plugin  

Vim og NeoVim 

Med en mengde Go-plugins.

  • vim-go
  • Syntastic
  • Tagbar
  • vim-kompilator-go
  • vim-godef
  • vim-go-extra

Konklusjon

Go har kommet langt og har et robust økosystem som inneholder mange muligheter for utviklingsmiljøet. Delve debugger gir en fantastisk interaktiv feilsøking og brukes av de fleste topp IDEer. Spill rundt med disse IDEene og finn den som passer deg best. 

Den rette IDE kan gjøre jobben med Go enda morsommere.