2010-06-26 18 views
12

Alexandrescu'nun kitabı Modern C++ tasarımını okudum ve kullandığı tekniklerden oldukça etkilendim, bu yüzden başvuruma Loki library eklemek istedim.C++: Bisikletçiler için Loki veya Boost kullanıyor musunuz?

Ancak daha fazla araştırma sonra, bunun artırmak, zaten kullanıyorum ki

(Ben mesela artırımı a tek bulamadık, tüm olmasa) benzer işlevler bir sürü sağlar gördü Politika esaslı tasarım ve jokeyler nedeniyle loki kullanmakla ilgilendi.

İkisi de, takviye ve loki'nin artıları ve eksileri var. Loki ile ilgili temel endişe, zayıf belgeler (kütüphane artık kitaba bağlı değil) ama loki'nin bazı alanlarda daha güçlü ve esnek olduğunu düşünüyorum (bu konuda yanlış olabilirim)

functors ve politikaları için destek veya loki kullanmayı seçerek önce, gerçek hayatta bunları kullanan insanların görüşünü öğrenmek istiyorum.

Bazen işler kağıt üzerinde çok iyi görünüyorsun ama sen gerçek kullanıldıklarında :)

+4

Değil a tek sahip Boost hakkında en iyi şeylerden biridir. Dünyanın ihtiyaç duyduğu son şey, * daha * singleton kullanmaya teşvik. – jalf

cevap

4

.

Tüm projelerde kullanmıyorum.

ben bağımlılıkları ne tam kontrol var kişisel projeler (çoğunlukla oyunlar) üzerinde kullanabilirsiniz.

I (boost birkaç diğer kütüphanelerle) büyük bir oyun projesinde boost :: fonksiyonunu kullanıyorum.

Loki de iyi ama ihtiyacım yoktu. Kullanmayı düşündüğüm kütüphanenin tek kısmı Singleton'dur ama o an için yeterince iyi olan özel bir kullanıyorum. belki düşünmeye

2

C++ 0x ben hızlı fonksiyon nesneler için kullanıyorum budur bazı dezavantajlara sahiptir. Ben (VC9 ve VC10 ile) Standart Kütüphanesi bir uzantısı gibi environnement ++ benim bütün C Boost kullanıyorum

+2

Eğer yanılıyorsam lütfen beni düzeltin ama C++ 0x ne gcc ne de visual studio 2008 tarafından tam olarak desteklenmiyor mu? – Dinaiz

+2

Eh, o açıkça Loki veya Boost sordu. – fingerprint211b

+0

@Dinaiz: Ben inanıyorum lambdas dahil olmak üzere, C++ 0x bir LOT olan GCC, en son sürümünü alabilirsiniz. VS2008'in hiçbiri yok, ancak sorunuzda derleyicileri belirtmediniz. – Puppy

5

Bir şey kütüphaneleri kabul sırasında bir akran değerlendirmesi sürecinden geçmek zorunda destek olduğunu. Bundan sonra, hangi değişikliklerin gerçekleştiğine gerçekten çok az dikkat edilmesi gerektiğine inanıyorum, ama en azından kabul edilmeden önce bazı gözden geçirmeler var. Loki sadece bir adamın vizyonudur. Elbette Alexandrescu oldukça iyi ama yine de ... tüm fikirleri ve bundan başka gözden geçirme yok.

12

Alexandrescu oldukça ilginç fikirleri (tip listeleri, politika tabanlı sınıf şablonları, vs) ama bunların çok taşınabilirlik ve doğruluğundan derleyici daha geniş bir aralığında test edilen birlikte artırımı üzerine geliştirilmiş vardı.

Mümkün olan durumlarda bu nedenlerden ötürü artırmayı tercih ederim. Modern C++ Tasarım, C++ 'nın esnekliğine ve bir çok kişinin ortak programlama problemlerine yaklaşımda bir kişinin zihnine (çok iyi bir) bir bakış açısı sağlamaya devam ediyor. Örneğin

, politika tabanlı akıllı işaretçiler çok düzgün bir fikir, ama boost yazarlar Shared_ptr uygulamak ve bu şekilde scoped_ptr tercih etti neden biz bulabilirsiniz:

A. Parametreleştirme kullanıcılar zorlaştırır. shared_ptr şablonu, kapsamlı parametrelemeye gerek duymadan ortak ihtiyaçları karşılamak için özenle hazırlanmış .kötüye çok zor da kullanımı çok kolaydır ve bir çok yapılandırılabilir akıllı işaretçi icat edilebilir bir gün. Sonra kadar, Shared_ptr geniş bir uygulama yelpazesi için seçim akıllı işaretçi olduğunu. ( politika ilgilenenler tabanlı akıllı işaretçiler Andrei Alexandrescu'nun Modern C++ Tasarım okumalısınız.)

akıllı işaretçiler çeşitli gerekiyor ve siz ve ekibiniz şablon parametrelendirilmesidir yoğun çalışma rahat bir şekilde, Daha sonra akıllı göstericilerin uygulanmasına yönelik politika temelli bir yaklaşım sizin için işe yarayabilir. Ancak, scoped_ptr ve shared_ptr (zayıf_ptr ile birlikte) işi oldukça kapsamlı bir şekilde yapma eğilimindedir. Politika sınıflarının kombinatoryal davranışı, çok çeşitli yararlı kombinasyonların olduğu bir şey için muhtemelen daha iyi kullanılır.

Yine de hala ele henüz artırmak Alexandrescu'nun gelen bazı ilginç önerileri var. derleyiciler daha iyi bir iş hareket kurucular uygulayan ya da biz C++ 0x gelen rvalue başvuruları kullanabilirsiniz kadar yapacak kadar MOJO, örneğin, hala gerçekten yararlıdır. Ayrıca bellek ayırıcılarını uygulama konusunda çok ilginç düşünceler var.

sorusuna gelince, Loki parçaları ticari projede mojo için gerekli kullanın, ancak uygun olduğunda çoğunlukla artırmak.

İlgili konular