Thread overview
"import" hakkında
Sep 26, 2011
zafer
Sep 26, 2011
zafer
Sep 26, 2011
zafer
September 26, 2011

Merhaba,

Elimde şöyle bir yapı var. "main.d" ve "islem.d" isimli iki dosyadan oluşan bir projem var. Programın temeli main.d dosyası üzerine kurulu islem.d dosyası ise dosyalama ile ilgili gerekli işlemleri yapan yardımcı kodları içeriyor. Bu durumda bende

    import islem;

diyerek islem.d dosyasını main.d dosyası içine ekledim ve islem.d dosyasındaki işlemleri kullanmaya başladım. Buraya kadar bir sorun yok. Ardından bu sefer main.d içinde tanımladığım bir metodu islem.d dosyası içinde kullanmam gerekti bende aynı şekilde bu sefer islem.d dosyası içinde main.d dosyasının tanımını yaptım,

    import main;

Ancak bu biraz tuhaf oldu gibi yani main.d içine islem.d dosyasını aldım tamam ama tekrar islem.d içindede main.d dosyasını çağırdım burada bir sorun var mı? Doğru kullanım bu mudur? Konu hakkında daha fazla bilgisi olan var mı?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 26, 2011

Alıntı (zafer):

>

islem.d dosyasını main.d dosyası içine ekledim ... bu sefer islem.d dosyası içinde main.d dosyasının

Bu, kaçınılması gereken bir durumdur. Alt düzey işlemler içeren islem.d'nin üst düzey main.d'yi kullanması yanlış olur. Buna 'cyclic dependency' deniyor.

Bir çözüm, main.d'nin içindeki ortak kodu main.d'den başka bir dosyada tanımlamaktır. Duruma göre ya islem.d olabilir, ya da kavramsal olarak ondan daha alt düzey bir modül.

Öte yandan, burada D'nin modül kavramının bir yararını görüyoruz. C ve C++ gibi başlık dosyası eklenen dillerde başlık dosyalarını #ifndef/#endif'ler arasına almak ve eklenme sıralarına dikkat etmek gerekir.

Modüllerde öyle sorunlar yok. Her modül "ben şu modülleri kullanıyorum" der ve derleyici gerisini halleder.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 26, 2011

Alıntı (acehreli):

>

Bu, kaçınılması gereken bir durumdur. Alt düzey işlemler içeren islem.d'nin üst düzey main.d'yi kullanması yanlış olur. Buna 'cyclic dependency' deniyor.

Bu ciddi bir sorun olmasına rağmen böyle bir kullanımda derleyici herhangi bir uyarı veya hata mesajı vermdi. Böyle bir mesaj verse daha doğru olmaz mıydı?

Sanırım bu gibi durumlar tamamen bizim dikkatimize kalmış durumda, küçük projelerde sorun olmaz ama bir sürü dosyanın olduğu büyük projelerde çok tehlikeli durumlar oluşabilir diye düşünüyorum. Umarım bu durumu daha güzel bir çözüm bulurlar. Mesela ben diğer dillerdeki tecrübemden dolayı bu tuhaflığı hissetmemiş olsam kullanımda hiç bir sorun görünmüyordu.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 27, 2011

Amann Ali sende D derleyicisine hiç toz kondurmuyorsun :)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 26, 2011

Alıntı (zafer):

>

Bu ciddi bir sorun olmasına rağmen böyle bir kullanımda derleyici herhangi bir uyarı veya hata mesajı vermdi.

Yanlış derken, derleyicinin karışacağı kadar ciddi bir sorun değil aslında. Genellikle tasarım daha iyi düşünülebilir ve bağımlılık olabildiğince yukarıdan aşağıya doğru kurulabilir.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 27, 2011

Gerçekten, bir derleme hatası değil yani. :)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]