Açıklamalarda belirtildiği gibi, yapı bayrakları muhtemelen gereksinim duyduğunuz her şeyi çözmenin en iyi yoludur. Eğer gelişme yalnızca bazı özelliklere sahip istiyorsa Örneğin, bir dev
bayrağı kullanın:
Dosya constants_dev.go:
// +build dev
const DEVELOPMENT = true
Dosya constants_pro.go içinde Sonra
// +build !dev
const DEVELOPMENT = false
senin Kod, sadece basit bir if DEVELOPMENT { blah... }
yapın. Bunu herhangi bir ön işlemciden çok daha okunaklı buluyorum. Çok fazla sayıda inşaat bayrağı varsa bu oldukça karışık olabilir, ancak bu noktada muhtemelen komut satırı argümanlarını kullanmalısınız.
Yorumunuzda kodun çoğaltılmasından bahsetmiştiniz. Kodunuz gerçekten tekrar eden bir şeyse, muhtemelen bir işlevi bir fonksiyona sokmanız veya tekrarlayan bitleri yeniden kullanmak için yeniden yapılandırma kodu eklemeniz gerekir. Şahsen, basit boolean kontrollerinin ötesinde, özellikle C-stili makrolarla kodun devam ettirilmesinin zor olduğunu görüyorum.
Bu, jeneriklerle aynı şeydir. Kullandığım bir Java kütüphanesinde, sınıf imza böyle bir şey oldu: kütüphane çok iyi belgelenmiş değildi
class Thing<A, B, C, D, E>
, bu yüzden kod önemli miktarda (gerek uygulama gerekse kodu okumak zorunda neler olduğunu anlamak için kütüphaneyi kullanır.
Go'da, dil genellikle daha iyi, kendini belgeleyen bir kod oluşturan bir stili zorlar. Go geliştiricilerinin, bir önişlemci ve jenerik gibi bir şeyleri, saklamak için zor yazmayı, ama akıllı kodları önlemek için attığını düşünüyorum.
Daha önce kullandığınız eski deyimlere bakmadan önce Git yolunu denemenizi tavsiye ederim. Makroların ve #defines'in çoğunun kullanılmasının büyük ölçüde ilgisiz olduğunu göreceksiniz.
Bence Go'nun bazı felsefelerini özlüyorsunuz. Örneğin, açıklığın önemi. –
Tabii ki açıklık önemlidir, fakat çoklu zamanlamayı tekrar etmeyi düşünmüyorum, aynı kod netlik açısından daha iyidir. –
Neyi başarmaya çalıştığınıza dair bir örnek verirseniz, muhtemelen daha fazla "git" yolu vardır. – Chris