«inversion-of-control» etiketlenmiş sorular

Kontrolün tersine çevrilmesi (IoC), prosedürel programlamaya kıyasla bir sistemin kontrol akışının tersine çevrildiği bazı yazılım mimarisi tasarımlarının bir yönünü açıklayan soyut bir ilkedir.


7
Neden Kontrolün Tersine Çevirilmesi bu şekilde adlandırılıyor?
Kelimeler invertya controlda hiç kullanmadığımı tanımlarda Kontrol Tersini Tanımlamak için kullanılmıyor. Tanımlar Vikipedi kontrolün ters çevrilmesi (IoC) burada nesne birleştirmenin bir montajcı nesne tarafından çalışma zamanında bağlandığı ve tipik olarak statik analiz kullanılarak derleme zamanında bilinmediği, nesne yönelimli programlama anlamında ifade edilen bir programlama tekniğidir. ~ http://en.wikipedia.org/wiki/Inversion_of_control Martin Fowler Denetimin …


7
Tek Sorumluluk İlkesi - Kod Parçalanmasından Nasıl Kaçının?
Takım liderinin SOLID geliştirme ilkelerinin kötü niyetli bir savunucusu olduğu bir ekip üzerinde çalışıyorum. Bununla birlikte, karmaşık yazılımları kapıdan çıkarma konusunda çok fazla deneyimi yoktur. SRP'yi hali hazırda oldukça karmaşık bir kod temeli olan, şimdi çok yüksek derecede parçalanmış ve anlaşılması ve hata ayıklaması zor hale getirdiği bir duruma sahibiz. …

5
IOC Konteynerleri OOP İlkelerini çiğniyor
IOC Konteynerlerinin amacı nedir? Bunun için birleştirilmiş sebepler aşağıdakilerle basitleştirilebilir: OOP / SOLID Development prensiplerini kullanırken, Bağımlılık Enjeksiyonu dağınık hale gelir. Ya üst seviyedeki giriş noktalarına sahip olmanız, alt seviyelerdeki bağımlılıkları yönetme ve bağımlılıkları inşaat boyunca yinelemeli olarak geçirme ya da fabrika / imalatçı modellerinde ve ihtiyaç duyduğunuzda bağımlılıkları oluşturan …

4
Bağımlılık enjeksiyonu için neden çerçevelere ihtiyacımız var? [kapalı]
Bunun bir uygulaması olarak Kontrolün Tersine Çevirilmesi prensibi ve Bağımlılık Enjeksiyonu hakkında daha fazla şey okudum ve anladığımdan eminim. Temel olarak 'sınıf üyelerinizi' sınıf içindeki örneklemeler ilan etme 'diyor gibi görünüyor. Aksine, örneklemeler kurucu aracılığıyla yerine getirilmeli ve atanmalıdır; Dış bir kaynaktan sınıfa 'enjekte edilir'. Bu kadar basitse, göründüğü gibi, …

7
.NET'te DI uygulamanın "doğru" yolu nedir?
Bağımlılık enjeksiyonunu nispeten büyük bir uygulamada uygulamak istiyorum ancak bu konuda deneyimim yok. Birlik ve Ninject gibi mevcut kavramı ve birkaç IoC uygulaması ve bağımlılık enjektörleri çalıştım. Ancak, beni rahatsız eden bir şey var. Uygulamamda örnek oluşturmayı nasıl organize etmeliyim? Düşündüğüm şey, birkaç belirli sınıf tipi için nesne oluşturma mantığı …

2
Bağımlılık enjeksiyonu kullanımının yazılım mühendisliğinde sonuçları artırdığına dair kanıt var mı?
Popülerliğine bakılmaksızın, Bağımlılık Enjeksiyonunun (ve / veya bir DI kabının kullanılmasının) örneğin hata sayısını azaltmaya, sürdürülebilirliği artırmaya veya gerçek hayattaki yazılım projelerinde geliştirme hızını artırmaya yardımcı olduğunu gösteren ampirik kanıtlar var mı?

2
Bağımlılık enjeksiyonuyla yapılandırmayı nasıl yönetirsiniz?
Ben DI / IOC'un büyük bir hayranıyım. Zor bağımlılıkları ele almak / soyutlamak için harikadır ve hayatı biraz daha kolaylaştırır. Bununla birlikte, nasıl çözüleceğinden emin olmadığım küçük bir yakınma var. DI / IOC'deki temel fikir, bir nesne başlatıldığında, tüm bağımlılıklarının yapıcı içinde önceden doldurulmuş olmasıdır. Bununla birlikte, IMHO yapıcılar için …

1
Çerçeve yazarken Bağımlılık Enjeksiyonu / IoC kapsayıcı uygulamaları
.Net için çeşitli projelerde çeşitli IoC kapları (Castle.Windsor, Autofac, MEF, vb.) Kullandım. Sıklıkla istismar edildiklerini ve bir dizi kötü uygulamayı teşvik ettiklerini gördüm. IoC konteyneri kullanımı için, özellikle bir platform / çerçeve sağlarken belirlenmiş uygulamalar var mı? Çerçeve yazarı olarak amacım, kodu olabildiğince basit ve kullanımı kolay hale getirmektir. Ben …

3
Beni IoC kaplarında sat, lütfen
Birkaç kod IoC kapları kullanmanızı tavsiye gördüm. Motivasyon basit. Aşağıdaki bağımlılık enjekte edilen kodu alın: class UnitUnderTest { std::auto_ptr<Dependency> d_; public: UnitUnderTest( std::auto_ptr<Dependency> d = std::auto_ptr<Dependency>(new ConcreteDependency) ) : d_(d) { } }; TEST(UnitUnderTest, Example) { std::auto_ptr<Dependency> dep(new MockDependency); UnitUnderTest uut(dep); //Test here } İçine: class UnitUnderTest { std::auto_ptr<Dependency> d_; …

3
Bağımlılık enjeksiyonu alıyorum, ancak birisi IoC kapsayıcısına olan ihtiyacı anlamama yardımcı olabilir mi?
Sorunun başka bir tekrarı gibi görünüyorsa özür dilerim, ancak konuyla ilgili her makale bulduğumda çoğunlukla DI'nin ne olduğu hakkında konuşur. Bu yüzden DI alıyorum, ama herkesin girdiği bir IoC konteynerine olan ihtiyacı anlamaya çalışıyorum. Bir IoC konteynerinin amacı sadece bağımlılıkların somut uygulamasını "otomatik olarak çözmek" midir? Belki de sınıflarımın birkaç …

5
IoC için arabirimler yerine Func kullanma
Bağlam: C # kullanıyorum Bir sınıf tasarladım ve onu izole etmek ve birim testini kolaylaştırmak için tüm bağımlılıklarından geçiyorum; dahili olarak nesne somutlaştırması yapmaz. Ancak, ihtiyaç duyduğu veriyi almak için arayüzlere başvurmak yerine, genel amaçlı Funcs'a ihtiyaç duyduğu veri / davranışı döndürerek başvurdum. Bağımlılıklarını enjekte ettiğimde bunu lambda ifadeleriyle yapabilirim. …

5
Uygulamadan önce bir arayüz API'si yazmalı mıyım?
Son zamanlarda daha "organize" programlamaya giriyorum ve bir uygulamaya değil, bir arayüze programlamam gerektiğini öğreniyorum. Bunu göz önünde bulundurarak, mümkün olan yerlerde uygulamayı yazmadan önce arabirimlerdeki bir projeyi "taslak haline getirmek" daha iyi olur mu? Ve eğer durum buysa, 3. taraf kitaplıkların (örneğin Lidgren) kullanılması durumunda, bunları arayüzlere de sarmalı …

5
Aşağıdaki TDD kaçınılmaz olarak DI'ya yol açıyor mu?
Teste Dayalı Geliştirme (TDD), Bağımlılık Enjeksiyonu (DI) ve Kontrolün İnversiyonu (IoC) aynı anda yapmayı öğrendim. TDD kullanarak kod yazdığımda sınıfımın yapıcılarında daima DI'yi kullanıyorum. Bunun TDD yapmayı nasıl öğrendiğimden mi yoksa TDD'nin doğal bir yan etkisi mi olduğunu merak ediyorum. Benim sorum şu: Harici hizmetlere bağlı olmayan TDD ilkelerini ve …

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.