Integerlar
Bu bölümün bütün kodlarını burada bulabilirsiniz
Integerlar beklediğiniz gibi çalışır.Bir şeyler denemek için Add
fonksiyonu yazalım.adder_test.go
adında test dosyası oluşturalım ve bu kodu yazalım.
Not: Go kaynak dosyaları her dizinde sadece bir tane package
a sahip olabilir, dosyalarınızı ayrı ayrı düzenlediğinizden emin olun. Burada bunu ile ilgili bir açıklama var.
İlk olarak test yaz
Stringleri formatlarken %q
yerine %d
kullandığımızı farketmişsinizdir. Bunun sebebi string yerine integer yazdırmak istememiz.
Ayrıca main
paketini kullanmadığımızı da unutmayın, bunu yerine adından da anlaşılacağı üzere integers
adında bir paket tanımladık. Integerlar ile çalışırken Add
gibi fonksiyonları burada gruplandıracağız.
Dene ve testi çalıştır
Testi çalıştır go test
Derleme hatasını incele
./adder_test.go:6:9: undefined: Add
Testin çalışması için minimum kodu yaz ve başarısız test çıktılarını kontrol et
Derleyici hata vermeyecek kadar kod yaz. Testlerimizin doğru nedenle başarısız olup olmadığını kontrol etmek istediğimizi unutma.
Aynı tipte iki tane argüman olduğunda (bizim durumumuzda iki integer) (x int, y int)
yazmak yerine (x, y int)
yazarak kısaltabilirsin.
Şimdi testleri çalıştır ve testin neyin yanlış olduğunu doğru şekilde raporladığını görün.
adder_test.go:10: expected '4' but got '0'
Farkettiyseniz son bölümde named return value öğrenmiştik ama burada aynısını kullanmadık. Bu durum genelde bağlamın sonucu anlaşılır olmadığında kullanılmalıdır. Bizim durumumuzda ise Add
fonksiyonunun parametrelerini toplayacağı oldukça açıktır. Daha fazla detay için buraya bakabilirsiniz.
Testi geçecek kadar kod yaz
TDD'nin tam manası ile testi geçecek kadar minimum kod yazmalıyız. Belki ukala bir programcı bu şekilde yapardı.
Aha! Tekrar engellendi, TDD sahtekarlık değil mi?
Testin başarısız olması için farklı numaralarla başka test yazabiliriz ancak bu kedi fare oyununa benzeyecek.
Go'nun sözdizimine aşina olduğumuzda geliştiricileri sıkmayan ve bug bulmalarına yardımcı olan "Property Based Testing" isimli tekniği anlatacağım.
Şimdilik düzgünce yapalım
Eğer testi çalıştırırsanız geçecektir.
Refactor
Var olan kodda iyileştirme yapabileceğimiz bir şey yok.
Dönüş argümanını adlandırarak bunun belgelerde ve aynı zamanda çoğu geliştiricinin editöründe nasıl göründüğünü daha önce keşfetmiştik.
Bu harika çünkü yazdığınız kodun kullanılabilirliğine yardımcı oluyor. Kullanıcı sadece kodunuzun imzasına(type signature) ve dokümanına bakarak kullanımını anlayabilir.
Fonksiyonunuza yorum ekleyerek onlara doküman ekleyebilirsiniz. Standart kütüphanede olduğu gibi bunlar da Go Doc'ta gözükecektir.
Örnekler
Gerçekten ekstra mesafe katetmek istiyorsanız örnekleri yapabilirsiniz. Standart kütüphanenin dokümanında bir çok örnek bulabilirsiniz.
Codebasein dışında kalan, readme dosyası gibi dosyaların kod örnekleri kontrol edilmedikleri için eski olmuş olabilir ve var olan kod ile kıyaslandığında yanlış olabilirler.
Go örnekleri tıpkı testler gibi yürütülür, böylece örneklerin kodun gerçekte ne yaptığını yansıttığından emin olabilirsiniz.
Örnekler derlenir ve isteğe bağlı olarak bir paketin test takımının parçası olarak çalıştırılır.
Tipik testlerde olduğu gibi örnekler paketin _test.go
dosyasında olan fonksiyonlardır. ExampleAdd
fonksiyonunu adder_test.go
dosyasına ekleyin.
(Eğer editörünüz sizin yerinize paketleri otomatik olarak eklemiyorsa, derleme adımı çalışmayacaktır çünkü import "fmt"
kodu adder_test.go
dosyası içerisnde eksiktir. Hangi editörü kullanırsanız kullanın, bu tür hataların sizin için otomatik olarak nasıl düzeltileceğini araştırmanız şiddetle tavsiye edilir.)
Eğer kodunuz geçerli olmayacak şekilde değişirse, derlemeniz başarısız olacaktır.
Paketin testini çalıştırırsak, örnek fonksiyonun bizden başka bir düzenleme yapılmasına gerek kalmadan çalıştığını görebiliriz:
Lütfen not edin, eğer // Output: 6
yorumunu kaldırırsak örnek fonksiyon çalışmayacaktır. Fonksiyon derlenecektir ancak çalışmayacaktır.
Bu kodu ekleyerek örneğimiz godoc
içerisindeki dokümanda görünecek ve kodumuz daha da erişilebilir hale gelecektir.
Bunu denemek için godoc -http=:6060
komutunu çalıştırın ve http://localhost:6060/pkg/
adresini ziyaret edin.
Burada $GOPATH
içerisindeki tüm paktelerin listesini göreceksiniz, bu kodu $GOPATH/src/github.com/{your_id}
gibi bir yere yazdığınızı varsayarsak, örnek dokümanlarınızı bulabileceksiniz.
Eğer kodunuzu örnekler ile açık bir adreste paylaşırsanız, kodunuzun dokümanını pkg.go.dev adresinde paylaşabilirsiniz. Örneğin bu bölüm için nihai API burada. Bu web arayüzü standart kütüphane ve 3. parti kütüphanelerinin dokümanını incelemenize olanak sağlar.
Özetlersek
Ele alınanlar:
TDD iş akışının daha fazla uygulanması
Integerlar, ekleme
Kodumuzun kullanıcılar tarafından hızlı bir şekilde anlayabilmeleri için daha iyi doküman yazmak
Testlerimizin bir parçası olarak kontrol edilen kodumuzu nasıl kullanacağımıza dair örnekler
Bu sayfa @bariscanyilmaz tarafından çevrildi.
Last updated