Wat zijn de beste Golang-IDE's?

Go is een fantastische programmeertaal. Het komt ook met een uitgebreide toolketen. Veel ontwikkelaars gebruiken gewoon teksteditors met of zonder plug-ins om Go-code te schrijven, maar vele anderen geven er de voorkeur aan de juiste IDE's te gebruiken (geïntegreerde ontwikkelomgevingen). 

In deze tutorial leer je over de huidige status van Go IDE's en ben je klaar om je wapen te kiezen.

Waarom een ​​IDE gebruiken?

Ik was altijd een grote fan van IDE's. In het begin van mijn carrière gebruikte ik Microsoft's Visual Studio voor C / C ++ ontwikkeling evenals C #. Ik heb NetBeans gebruikt voor een korte periode van Java-ontwikkeling. Ik heb de PyCharm van JetBrains gebruikt voor de ontwikkeling van Python, en tegenwoordig gebruik ik de ontwikkeling van Gogland for Go van JetBrains.

Ik werk meestal aan grootschalige softwaresystemen die bestaan ​​uit meerdere projecten met duizenden bestanden. Ik heb veel hulp nodig met grote codebases. Hier de belangrijkste redenen waarom ik IDE's zo leuk vind:

Geïntegreerde codeorganisatie en navigatie

Met een goede IDE kunt u uw code hiërarchisch ordenen, bekijken en gemakkelijk navigeren, en ook snel uw code doorzoeken. De IDE doet veel meer dan alleen tekst zoeken en laat u filteren op basis van taalspecifieke constructies (bijvoorbeeld alleen klassen weergeven of interfaces met een bepaalde naam).

Geïntegreerde testen

Geïntegreerde testen is ook cruciaal. Ik besteed het grootste deel van mijn ontwikkelingstijd aan tests - ofwel schrijf ik ze, probeer ze te laten slagen of onderzoek waarom tests plotseling faalden. Met een goede IDE met geïntegreerde tests kunt u op selectieve wijze testen uitvoeren (allemaal, slechts één project, alleen mislukte tests van vorige run), fouten markeren en u snel naar de juiste plaats in de code laten springen om eventuele problemen op te lossen. probleem.

Geïntegreerde foutopsporing 

Dit is waarschijnlijk het belangrijkste kenmerk voor mij. Ik hou van geïntegreerde debuggers. Ik wil een breekpunt (inclusief voorwaardelijke breekpunten) kunnen toevoegen, de stacktracering kunnen bekijken en de variabelen in elk frame kunnen bekijken. 

Voor bonuspunten (bedankt PyCharm), hou ik ervan om een ​​interactieve consolesessie te hebben wanneer een breekpunt toeslaat. De alternatieven voor printf foutopsporing (vereist het wijzigen van de code en opnieuw opbouwen) of het bekijken van logbestanden (vaak niet genoeg korreligheid of veel ruis) zijn veel frustrerender en minder productief. Zelfs standalone debuggers zoals gdb komen niet in de buurt van de productiviteit van een goede geïntegreerde debugger.

Hogland

Gogland is mijn huidige Golang IDE. Het is een heel jong product, nog steeds in de preview voor vroege toegang, maar ik beschouw het nog steeds als de meest complete en geïntegreerde Go IDE. Het is gebouwd op de sterke basis van JetBrains, dus het is extreem robuust en vol functies.

Code-editor en assistentie

Gogland's code-editor is geweldig. Hier zijn enkele van de mogelijkheden:

  • Interface met tabbladen
  • Slimme codeaanvulling
  • Inspecties en snelle oplossingen
  • refactorings
  • Snelle navigatie
  • Snelle popups voor documentatie, definitie, gebruik, structuur, enz.
  • Codegeneratie (bijvoorbeeld interface van het programma)
  • Recursieve oproepen detecteren
  • Het type van een expressie weergeven
  • Uitgangspunten van de functie markeren
  • Parameter hints 

Debugger

De debugger van Gogland is uitstekend. Het is gebouwd bovenop Delve, dat ook wordt gebruikt door andere IDE's die we behandelen. Het gebruikt de vertrouwde JetBrains-foutopsporingsconfiguraties om alles te regelen over een foutopsporingsrun, zoals het uitgevoerde binaire bestand, de omgevingsvariabelen, de werkdirectory en de opdrachtregelargumenten. 

U kunt breekpunten, voorwaardelijke breekpunten en horloges instellen. Wanneer een breekpunt wordt geraakt, kunt u de stacktracering en de lokale variabelen in elk frame bekijken. Helaas worden globale variabelen niet weergegeven en zijn ze vaak nodig in Go.

Ik had één probleem met de debugger waarbij breekpunten voortijdig worden geraakt! Overweeg het volgende Go-fragment:

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

Soms, als ik een breekpunt op de laatste regel zet, zou het slaan, maar de waarde van z zou 0 zijn, in plaats van 4. Hoe kan het zijn? Het bleek dat de debugger op de een of andere manier in de war raakte. Als ik door de code blijf stappen, springt het terug naar z: = x + y, wijs 4 tot z toe, en ga dan opnieuw naar de laatste regel en druk 4 op de juiste manier af op het scherm. 

Ik heb een paar uur verspild met proberen een ingewikkeld stuk code te debuggen, niet beseffend dat ik niet altijd de juiste foto kreeg. Uiteindelijk kwam ik erachter wat er aan de hand was en negeerde ik gewoon de nep-vroege triggering van breekpunten.

Ik weet niet zeker of het een Delve- of Gogland-probleem is, maar ik weet zeker dat ze het snel zullen oplossen. Onthoud dat dit slechts een voorbeeld van een vroege toegang is.

Test Runner

Met de testrunner kunt u tests uitvoeren, stoppen en opnieuw starten. Ik kon het met succes gebruiken voor het uitvoeren en debuggen van eenheidstests, evenals integratietests met zowel Go's testpakket als een BDD-testraamwerk zoals ginkgo.

Ga naar Tools

Go wordt geleverd met verschillende gereedschappen en Gogland integreert ze rechtstreeks in de IDE. U kunt elk hulpmiddel oproepen vanuit het menu "Code | Ga Tools". De ingebouwde codering van Gogland maakt gebruik van de standaard "go fmt" -tool.

Versiebeheer

Gogland erft het volwassen broncontrolebeheersysteem van andere JetBrains-producten. Ik heb voornamelijk de git-ondersteuning gebruikt, die het beheer van meerdere projecten, een uitstekende weergave van filialen, meerdere wijzigingsets en meer mogelijk maakt. Andere bronbesturingssystemen zoals Mercurial en SVN worden ook ondersteund, via extra plug-ins.

Geïntegreerde terminal  

Gogland biedt een ingebouwde terminal voor het geval u een aantal commando's moet uitvoeren. Het is prettig om binnen de IDE te blijven en van / naar editorvensters te kunnen kijken of kopiëren zonder volledig van venster te wisselen.

rekbaarheid

Gogland wordt geleverd met tal van ingebouwde functies, maar het is volledig uitbreidbaar en veel van de ingebouwde functies zijn eigenlijk vooraf geladen plug-ins. Je kunt veel nuttige plug-ins installeren en je kunt je eigen plug-ins ontwikkelen als je dat wilt.

Visual Studio-code

Visual Studio Code is een uitbreidbare open-source code-editor die voornamelijk door Microsoft is ontwikkeld (met veel bijdragen van de community). Het is gebaseerd op Electron, dat op zijn beurt is gebaseerd op Chromium. Visual Studio Code ondersteunt vele talen en is oorspronkelijk gericht op webontwikkeling. Het heeft een sterke ondersteuning voor Go-ontwikkeling, inclusief de integratie van alle Go-tools en de Delve-foutopsporing via een speciale extensie. U moet een aantal Go-pakketten en hulpprogramma's installeren om aan de slag te gaan.

Visual Studio Code biedt ook ingebouwde git-integratie, hiërarchische map / bestandsverkenner en een interface met tabbladen.

De IntelliSense-ondersteuning (automatisch aanvullen, weergeven van parametertypen en documentatie) is geweldig en zorgt voor een zeer aangename bewerking. De geïntegreerde debugger (gebruikt ook Delve onder de motorkap) is zeer goed gedaan en komt overeen met Gogland's debugger.

Visual Studio Code reageert snel en snel. Hier is de substantiële lijst met functies:

  • Voltooiingslijsten (met behulp van gocode)
  • Handtekening Hulp (met behulp van gogetdoc of godef + godoc)
  • snippets
  • Snelle informatie (met behulp van gogetdoc of godef + godoc)
  • Ga naar definitie (met gogetdoc of godef + godoc)
  • Vind referenties (met behulp van goeroe)
  • Verwijzingen CodeLens
  • Bestandsoverzicht (met go-outline)
  • Zoeken naar werkruimtesymbolen (met behulp van go-symbolen)
  • Hernoem (met behulp van gorenaam.) Opmerking: voor het ongedaan maken na hernoemen om in Windows te werken, moet u een ander gereedschap in uw pad hebben)
  • Build-on-save (met go build and go test)
  • Lint-op-save (met golint of gometalinter)
  • Formaat (met windlijnen of goimports of gofmt)
  • Genereer unit tests skelet (met behulp van getests)
  • Imports toevoegen (met gopkgs)
  • Tags toevoegen / verwijderen op struct-velden (met behulp van gomodifytags)
  • Semantische / Syntactische foutrapportage terwijl u typt (met behulp van gotype-live)
  • Voer tests uit onder de cursor, in het huidige bestand, in het huidige pakket, in de volledige werkruimte (met gebruik van de go-test)

LiteIDE

LiteIDE is heel ongebruikelijk. Het was de eerste serieuze Go IDE, begonnen in 2011/2012, en het gaat nog steeds goed. Het is een C ++ Qt-applicatie en het heeft een aangepaste look en feel. Net als bij Gogland en Visual Studio Code, gebruikt het de Go-tools en Delve-debugger om taalservices te bieden (hoewel het begon met het gdb-debugger voordat Delve gereed was). 

Over het algemeen is het een IDE met volledige functionaliteit, maar hij voelt niet zo gepolijst aan. Voor zover ik kan nagaan, is dit een eenmansinspanning, wat buitengewoon is. Hier is een overzicht van de LiteIDE-functies.

Kernfuncties

  • Beheer van systeemomgeving
  • Configureerbare bouwopdrachten
  • Eenvoudig en open debug-systeem (ondersteunt zowel gdb als Delve)
  • Kate-indeling voor automatische aanvulling en thema's
  • Configureerbare automatische aanvulling met WordApi
  • Op MIME-type gebaseerd systeem
  • Ondersteuning voor plug-ins
  • Snel open

Golang-ondersteuning

  • Pakketbrowser
  • Klasseoverzicht en overzicht
  • Documentbrowser
  • Gocode-ondersteuning
  • GOPATH API-index
  • Code navigatie
  • Gebruiken zoeken
  • Code Refactor
  • Ga een speeltuin

Extra ondersteuning

  • Markdown
  • JSON
  • Golang aanwezig

Breed

Wide is interessant omdat het een toegewijde webgebaseerde IDE is van Golang. De focus ligt op samenwerking en is ontworpen voor teams. De ontwikkelaar is Chinees en veel van de documentatie is in het Chinees, dus het is mogelijk niet voor iedereen geschikt. Het is absoluut niet op één lijn met de andere IDE's wat betreft functies en integratie.

Ga plug-ins voor andere IDE's

Er zijn veel IDE's voor algemene doeleinden die veel programmeertalen ondersteunen en die ook ondersteuning bieden voor de Go-taal. Ik ben geen grote fan van dergelijke omgevingen. Ik geloof dat een geïntegreerde omgeving diep geïntegreerde taalspecifieke haken moet hebben. Het is moeilijk om te implementeren als een eenvoudige plug-in (hoewel je misschien beweert dat dit precies is wat de VS-code doet). 

Enkele populaire ontwikkelomgevingen die ondersteuning voor Go hebben toegevoegd zijn:

  • Verduistering
  • Atoom
  • beugels
  • Komodo
  • Wolk 9

Tekstbewerkers

Go is een eenvoudige taal. Veel mensen voelen zich erg productief door alleen een teksteditor te gebruiken, mogelijk met wat extra Go-plug-ins. Ik beschouw die echt geïntegreerde ontwikkelomgevingen niet. Maar het is logisch als je veel jaren ervaring hebt met je teksteditor, je hebt het al naar eigen wens aangepast en je gebruikt het voor veel andere taken. Hier is een lijst met enkele van de meer populaire teksteditors en hun Go-plug-ins:

Emacs

Met de volgende plug-ins: 

  • go-modus
  • GoFlyMarkeer syntaxis in Flymake-stijl op Go
  • go-errcheck.el Errcheck-integratie voor Emacs

Sublieme tekst 

Met de GoSublime-plug-in  

Vim en NeoVim 

Met een overvloed aan Go-plug-ins.

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

Conclusie

Go heeft een lange weg afgelegd en heeft een robuust ecosysteem met veel opties voor de ontwikkelomgeving. De Delve-foutopsporing biedt een fantastische interactieve foutopsporingservaring en wordt door de meeste topgebruikers van IDE gebruikt. Speel met deze IDE's en vind degene die jou het meest uitkomt. 

De juiste IDE kan het werken met Go nog leuker maken.