«solid» etiketlenmiş sorular

Bir dizi tasarım ilkesi için anımsatıcılar: Tek sorumluluk, Açık-kapalı, Liskov ikamesi, Arayüz ayrımı, Bağımlılık dönüşümü

5
Bir arabirimin (OOP) anlamsal sözleşmesi bir işlev imzasından (FP) daha bilgilendirici midir?
Bazıları tarafından, eğer SOLID ilkelerini aşırı uçlarına götürürseniz, fonksiyonel programlamaya son verdiğiniz söylenir . Bu makaleye katılıyorum, ancak arayüz / nesneden işlev / kapanışa geçişte bazı anlambilimin kaybolduğunu düşünüyorum ve İşlevsel Programlamanın kaybı nasıl azaltabileceğini bilmek istiyorum. Makaleden: Ayrıca, Arabirim Ayrışma İlkesini (ISS) titizlikle uygularsanız, Başlık Arabirimleri yerine Rol Arabirimleri'ni …

5
C'de Arabirim Ayrımı ilkesi nasıl uygulanır?
Birkaç istemciye sahip olan 'M', 'C1', 'C2', 'C3' gibi bir modülüm var. Modül M'nin ad alanını, yani ortaya koyduğu API'lerin ve verilerin bildirimlerini başlık dosyalarına öyle bir şekilde atamak istiyorum - herhangi bir istemci için yalnızca gereksinim duyduğu veriler ve API'ler görünür; modülün ad alanının geri kalanı istemciden gizlenir, yani …
15 c  interfaces  solid 

3
Uygulamada açık-kapalı ilkesine nasıl uyulur
Açık-kapalı prensibinin amacını anlıyorum. Değiştirmeden genişletmeyi denemenizi söyleyerek, değiştirirken zaten çalışan bir şeyi kırma riskini azaltmak içindir. Ancak, bu prensibin uygulamada nasıl uygulandığını anlamakta zorlandım. Anladığım kadarıyla bunu uygulamanın iki yolu var. Olası bir değişiklikten önce ve sonra: Önce: soyutlamalara programlayın ve 'geleceği tahmin edin' olabildiğince. Örneğin , gelecekte sisteme …

4
Test odaklı geliştirme beni SOLID'yi takip etmeye zorluyor mu?
TDD uygulayıcılarından, TDD'nin avantajlarından birinin, geliştiricileri SOLID ilkelerini (Tek sorumluluk, Açık-kapalı, Liskov ikamesi, Arayüz ayrımı ve Bağımlılık dönüşümü) takip etmeye zorlaması olduğunu çok şey duydum . Ancak bana gelince, SOLID'i takip etmenin (ve böylece test edilebilir mimari yaratmanın) önemli olduğunu anlamak için sadece bazı testler (öncelikle birim test) yazmak yeterlidir. …

3
RxJava sınıfı Flowable'ın yasal olarak 460 yöntemi olabilir mi?
Ben sadece RxJava , Java'nın ReactiveX ( Rx ve Reaktif Uzantıları olarak da bilinir) uygulaması ile başlıyorum . Gerçekten bana vurdu o şey kitlesel büyüklüğündeydi RxJava en Akışkan sınıfta : o 460 yöntemleri vardır! Adil olmak: Aşırı yüklenmiş, toplam yöntem sayısını önemli ölçüde çarptıran birçok yöntem vardır. Belki de bu …

2
Gerçek Dünya - Liskov İkame İlkesi
Arka plan: Bir mesajlaşma çerçevesi geliştiriyorum. Bu çerçeve şunları sağlayacaktır: servis otobüsü üzerinden mesaj gönderme mesaj veri yolundaki kuyruklara abone olma mesaj veri yolundaki konulara abone olma Şu anda RabbitMQ kullanıyoruz, ancak çok yakında Microsoft Hizmet Veri Yolu'na (Şirket İçi) taşınacağımızı biliyorum. Bir dizi arabirim ve uygulama oluşturmayı planlıyorum, böylece …

4
Tek Sorumluluk modeli sınıflar için ne kadar spesifik olmalıdır?
Örneğin, konsoldan ve konsoldan her türlü giriş / çıkış yöntemine sahip bir konsol oyun programınız olduğunu varsayalım. Tek hepsini tutmak için akıllı olurdu inputOutputsınıf veya gibi daha spesifik sınıflara onları yıkmak startMenuIO, inGameIO, playerIO, gameBoardIO, her sınıf 1-5 yöntemleri hakkında sahip vb öyle ki? Ve aynı notta, onları parçalamak daha …


1
Kalıtım hiyerarşisinde Liskov ikame ilkesi nasıl doğrulanır?
Bu yanıttan ilham alındı : Liskov İkame İlkesi şunu gerektirir : Bir alt tipte önkoşullar güçlendirilemez. Alt koşullar bir alt türde zayıflatılamaz. Süpertipin değişmezleri bir alt tipte korunmalıdır. Geçmiş kısıtı ("geçmiş kuralı"). Nesneler yalnızca yöntemleri (kapsülleme) yoluyla değiştirilebilir olarak kabul edilir. Alt tipler, üst tipte bulunmayan yöntemler getirebileceğinden, bu yöntemlerin …

2
LinkedList genişletme yığını. Liskov İkame İlkesinin ihlali mi?
Add_first (), add_last (), add_after (), remove_first (), remove_last () ve remove () gibi işlevlerle bir sınıf LinkedList var. Şimdi push (), pop (), peek () veya top () gibi işlevler sağlayan bir Sınıf Stack var ve bu yöntemleri uygulamak için LinkedList sınıf yöntemlerini genişletiyor. Bu Liskov İkame İlkesinin ihlali …


4
Alaycılar Açık / Kapalı prensibini ihlal ediyor mu?
Bir süre önce, bulamadığım bir Yığın Taşması cevabında, genel API'leri test etmeniz gerektiğini açıklayan bir cümle okudum ve yazar arayüzleri test etmeniz gerektiğini söyledi. Yazar ayrıca, bir yöntem uygulaması değiştiyse, test senaryosunu değiştirmeniz gerekmediğini, çünkü bunu yapmak, test altındaki sistemin çalıştığından emin olmak için sözleşmeyi bozacağını açıkladı. Başka bir deyişle, …

3
Bağımlılık Tersine Çevirme İlkesi: “Üst düzey politika” ve “düşük düzey detay” diğer insanlara nasıl tanımlanır?
Bağımlılık tersine çevirme prensibini (çoğunlukla genç) meslektaşlarıma anlatmaya çalışıyorum. Hangisinin bir yazılımda "yüksek düzeyli politika" hangisinin "düşük düzeyli ayrıntı" olduğunu nasıl tanımlayabiliriz? Örneğin, yazılımımız birkaç iş uygulamasının iş akışını otomatik hale getirirse, neden iş akışı otomasyonunun üst düzey politika olduğunu ve iş uygulamalarının ayrıntılar olduğunu söylüyoruz?

1
Bir üçüncü taraf kodunun sarılması, tüketicilerini birim test etmek için tek çözüm mü?
Birim sınaması yapıyorum ve sınıflarımdan birinde yöntemlerden birinden posta göndermem gerekiyor, bu yüzden yapıcı enjeksiyonunu kullanarak Zend_MailZend çerçevesindeki sınıf örneğini enjekte ediyorum . Şimdi bazı insanlar bir kütüphane yeterince kararlıysa ve sık sık değişmeyecekse, onu sarmaya gerek olmadığını savunuyorlar. Bu nedenle Zend_Mail, istikrarlı olduğunu ve değişmeyeceğini ve ihtiyaçlarıma tamamen uyduğunu …

3
SOLID ilkelerini uygulama
SOLID tasarım ilkelerinde oldukça yeniyim . Sebeplerini ve faydalarını anlıyorum, ancak yine de SOLID ilkelerini kullanmak için pratik bir egzersiz olarak yeniden düzenlemek istediğim daha küçük bir projeye uygulayamıyorum. Mükemmel çalışan bir uygulamayı değiştirmeye gerek olmadığını biliyorum, ancak yine de yeniden düzenlemek istiyorum, böylece gelecekteki projeler için tasarım deneyimi kazanıyorum. …

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.