Uygun Bir Go Projesi Düzeni Oluşturmak İçin İpuçları

Go'da Nesne Yönelimli Programlamaya Giriş

Bir Go projesi, farklı paket adlarına sahip birden çok dosya içerebilir. Bu durumlarda uygun bir düzen oluşturmak, özellikle yeni başlayanlar için Go’da her zaman çok kolay değildir. Bu Go programlama öğreticisi, belirli kullanım senaryolarına ilişkin uygulamalı bir örnekle hızlı bir genel bakış sağlar, böylece yalnızca arkasındaki konsepti anlamakla kalmaz, aynı zamanda bir Go projesi için uygun bir düzen oluşturabilirsiniz.

Okumak: Uzak Geliştiriciler için En İyi Araçlar

Dizin yapısı veya Go proje dosyalarının belirli bir şekilde nasıl organize edileceği konusunda katı kurallar yoktur. Bu aslında hem iyi hem de kötü bir fikirdir; kötü çünkü karmaşa yaratmak kolay ve iyi çünkü birinin projesinin organizasyon yapısı programcının zevkine göre inşa edilebilir.

Ancak sorumluluk olmadan özgürlük bir karmaşa olabilir. Go programcıları, projelerinde dosya ve dizinleri düzenlerken genellikle belirli kalıpları takip ederler. Bu da projeden projeye değişir. Bu kalıpları takip ederler çünkü bu sadece onlar için değil, aynı zamanda diğer programcılar için de işe yarar. Belirli bir sistemi takip eden herkes sadece üretken olmakla kalmaz, aynı zamanda birlikte çalışmak eğlencelidir. Proje düzenine geçmeden önce, Go projeleri ile ilgili olarak karşımıza çıkan bazı temel unsurları anlayalım. Yeni başlayanlar için bunlardan biri bir modül.

Go’da Modül nedir?

Tipik bir Go projesinde, bir geliştiricinin yapması gereken ilk şey, bir dizin proje adı ile. Kesin kurallar olmamasına rağmen, programcılar dizin adını proje adıyla aynı tutmaya çalışmalıdır. Bu dizin, projeyle ilgili her dosyayı ve diğer alt dizinleri içerecektir:

$ mkdir go-demoproject
$ cd go-demoproject

Bir Go geliştiricisinin tipik olarak yaptığı bir sonraki şey, kullanmaktır. git aracı Modül ile ilgili komutlar. Örneğin, mevcut dizinde yeni modülleri başlatmak istiyorsak. Örnek olarak, modülleri şu şekilde başlatmak istiyorsak github.com/xyzuser/go-demoproject şunları yazabiliriz:

go mod init github.com/xyzuser/go-demoproject

Bu, geçerli dizinde iki dosya oluşturacaktır: go.mod ve git.sum. Her ikisi de aslında basit metin dosyalarıdır ve herhangi bir metin düzenleyiciyle açılabilir.

Bu nedenle, tanım gereği bir modül, bir dosya ağacında depolanan bir Go paketleri koleksiyonudur. go.mod dosyanın kökünde. bu go.mod file, bağımlı üçüncü taraf dosyalarının içe aktarıldığı modül yolunu ve uygulamayı başarıyla oluşturmak için gereken diğer modülleri tanımlar. Bu, muhtemelen farklı sürüm numaraları nedeniyle, bir modüldeki uygulamaları başka bir modülle aynı uygulamayla ayıran, C++’da kullanılan ad alanlarıyla aşağı yukarı aynıdır.

Okumak: Go’da Dosya İşleme Girişi

Go’daki go.mod Dosyası

Go modülleri tarafından tanımlanır go.mod modül özelliklerini, Go sürümünü ve bu projenin diğer modüllere bağımlılıklarını açıklayan dosya. Özellikler şunları içerir:

  • Geçerli modülün modül yolu, modülün go araçları tarafından indirilebileceği konum, örneğin modül kodunun depo konumu. Bu aynı zamanda birden fazla modülün sürüm numarası olması durumunda benzersiz bir tanımlayıcı görevi görür. Ayrıca modüldeki tüm paketlerin paket yolunun önekini de içerir.
  • Mevcut modül için gereken minimum Go sürüm numarası.
  • Mevcut modülün başka bir modül versiyonuyla nasıl değiştirileceğine dair isteğe bağlı talimatlar.

Diyelim ki, bizim demoprojeye gitgibi diğer bazı modüllere bağımlılıklarımız var. goril/mux, gorm, ve arka uç veritabanı olarak MySQL. Bu üçüncü taraf modüllerin ilgili depolarından yerel makinenin bir modül önbelleğine indirilmesi gerekir. Uygulamayı oluştururken modüller projemize kopyalanır. Bu yüzden genellikle aşağıdaki komutları yazarız:

go get "github.com/jinzhu/gorm"
go get "github.com/jinzhu/gorm/dialects/mysql"
go get "github.com/gorilla/mux"

Modüller aslında varsayılan olarak indirilir ve depolanır. Git alt dizinde bulunan ev yerel makinenin dizini. Direktiflerde yer alan go.mod dosya şimdi şöyle bir şeye benziyor:

go.mod

module github.com/xyzuser/go-demoproject

go 1.18

require (
	github.com/go-sql-driver/mysql v1.5.0 // indirect
	github.com/gorilla/mux v1.8.0 // indirect
	github.com/jinzhu/gorm v1.9.16 // indirect
	github.com/jinzhu/inflection v1.0.0 // indirect
)

Gördüğümüz gibi, dosya şunları tanımlar:

  • Modül yolu
  • Bu modül dosyasını oluşturmak için kullanılan Go sürümü
  • Başarılı derleme için proje bağımlılık gereksinimi ve bunları belirli sürüm numarasına kilitler

Son eke dikkat edin – // dolaylı. Bağımlılık modülü iki tipte olabilir: doğrudan ve dolaylı:

  • Modülün bağımlılığı doğrudan içe aktarılıyorsa, bu doğrudan bir bağımlılıktır.
  • Modülün doğrudan bağımlılığı, diğer bazı bağımlı modülleri içe aktarıyorsa, dolaylı bağımlılıktır. Eğer bir modülden bahsediliyorsa go.mod dosyası ancak modülün herhangi bir kaynak kodu dosyası tarafından içe aktarılmazsa, dolaylı bağımlılık olarak da değerlendirilir.

Okumak: Go’da Hatalar Nasıl İşlenir?

Go’daki go.sum Dosyası

bu git.sum file, proje için gerekli olan doğrudan ve bağımsız bağımlılıkları sürüm numaralarıyla birlikte listeleyen, otomatik olarak oluşturulan başka bir bağımlılık kilit dosyasıdır. Bu arada, değil mi go.mod uygulamanın başarılı bir şekilde oluşturulması için yeterli dosya var mı? bu git.sum dosyası, her doğrudan ve dolaylı bağımlılığın sağlama toplamı ile doğrulamak için sağlama toplamı gibi ek bilgileri listeler.

bu demoprojeye git oluşturduğumuz aşağıdaki otomatik oluşturulmuş git.sum dosya. Bu dosya, komutu kullandığımızda otomatik olarak oluşturulur. mod başlangıcına git. Bunlar benim durumumda otomatik olarak oluşturulan listeden örnek satırlar:

github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=

...

Go’da Proje Dosyalarını Yerleştirme

Bir Go projesini düzenlemenin daha iyi bir yolu, ilgili Go kod dosyalarını projenin ana dizini altındaki bir alt dizine koymaktır, böylece projenin diğer bölümleri API’leri bulabilir ve kullanabilir. Tüm kaynak dosyaları aynı dizin altında tutmak, yapabilseniz bile pek iyi bir fikir değildir. Bu, daha deneyimli kodlayıcıların bileceği gibi çok önemli olan temiz ve düzenli koddan yararlanır.

Şimdi, bize geri dönersek demoprojeye git. Dizin yapısını düzenleyelim. Görünüşe göre (gorilla/mux ve gorm ve mysql lehçelerini içe aktardığımız için), proje arka uç veritabanına sahip bir web uygulaması olduğundan, dizin ağacı yapısını aşağıdaki gibi ayarlamayı seviyoruz. Bunun örnek bir kılavuz olduğunu anlayın – bir programcı bunu farklı bir şekilde yapmayı seçerse sorun değil, ancak anlamlı ve mantıksal olarak tutarlı yapılmalıdır. Önemli olan bu.

Belirtildiği gibi, bu, örneğin dizin ağacı yapısıdır, ancak belirli bir proje türüdür. Projenin kök dizinine proje adı verilir (demoprojeye git). Diğerleri bu dizinin alt dizinleri ve alt dizinleridir. bu cmd klasör paketi içerir ana ve sırayla şunları içerir: ana.go yürütmenin başladığı dosya. bu pkg alt dizin, uygulamada kullanacağımız tüm yerel paketleri içerir; onlara içerik dosyalarının ilgili adları verilir. unutmayın ki go.mod ve git.sum dosyalar doğrudan proje kök dizini altında oluşturulur.

Go Paket Düzenleri Üzerine Son Düşünceler

Bu Go programlama eğitiminde, Go’da proje dizini yapısının nasıl düzenleneceği hakkında bilgi ve ipuçları sağlamaya çalıştık. Bir proje tipik olarak birden çok paket ve diğer kaynaklar halinde düzenlenmiş birden çok kaynak dosyası içerir. Düzgün bir şekilde organize edilmediği takdirde, neyin nereye gittiğini anlamak için bu bir kabus olabilir. Açık olmasa da, uygun bir proje dizini yapısını düzenlemek aslında basittir. Basit bir ipucu veya doğru yöne işaret eden bir işaret, en azından ilk aşamalarda birçok sorunu çözebilir. Yine de bir ipucu daha – dizinler ve dosyalar için adlandırma şeması basit ve anlamlı olmalı ve uygun şekilde adlandırılmış paketlere yerleştirilmelidir. Şimdilik bu kadar. İyi Seyirler!

Devamını oku Go ve Golang programlama eğitimleri.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.