«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ü

6
Daire-elips problemi ilişkiyi tersine çevirerek çözülebilir mi?
Having CircleuzatmakEllipse kırar Liskov yerdeğiştirme İlkesi yani X ve Y bağımsız olarak bir elips çizmek için ayarlayabilirsiniz, ancak X daima çevreler için Y eşit olmalıdır: Bir sonşartı değiştirir çünkü. Ama burada Circle'ın Elips'in alt tipi olması nedeniyle ortaya çıkan sorun değil mi? İlişkiyi tersine çeviremez miydik? Yani, Daire süper tiptir …

5
Kaliteyi iyileştirme umuduyla mini-refactor kodunu faydalı mıdır, yoksa çok fazla faydası olmadan sadece “kodu hareket ettirmek” midir?
Misal Tek bir yerde "her şeyi" yapan monolitik kodla karşılaştım - veritabanından veri yükleme, HTML işaretlemesi gösterme, yönlendirici / denetleyici / eylem gibi davranma. SRP hareketli veritabanı kodunu kendi dosyasına uygulamaya başladım, işler için daha iyi adlandırma sağladım ve hepsi iyi görünüyordu, ama sonra neden bunu yaptığım konusunda şüphelerim var. …

1
Açık Kapalı Prensibi (OCP) - Bağımlılık Ters Çevirme İlkesi (DIP)
Açık Kapalı Prensip (OCP) ile Bağımlılık Tersinir Princible (DIP) arasındaki farkı anlamaya çalışıyordum . Şimdiye kadar internette yaptığım araştırmalara dayanarak, 'DIP'nin OCP'ye ulaşabileceğimiz bir seçenek olduğu' sonucuna vardım. Ben haklı mıyım? Bana DIP'yi takip etmeyen ama OCP'yi takip eden bir örnek verebilir misiniz?

5
Aşırı yükleme Açık / kapalı prensibine bir örnek midir?
Wikipedia diyor "yazılım varlıkları (sınıflar, modüller, işlevler, vb.) genişletme için açık, ancak değişiklik için kapalı olmalıdır" Kelime fonksiyonları gözlerimi yakaladı ve şimdi bir yöntem için aşırı yük oluşturmanın Açık / kapalı prensibinin bir örneği olarak kabul edilebileceğini varsayabilir miyiz acaba? Bir örnek açıklayayım. Hizmet katmanınızda neredeyse 1000 yerde kullanılan bir …

4
C # arabiriminde bir önkoşul (LSP) nasıl belirtilir?
Diyelim ki şu arayüze sahibiz - interface IDatabase { string ConnectionString{get;set;} void ExecuteNoQuery(string sql); void ExecuteNoQuery(string[] sql); //Various other methods all requiring ConnectionString to be set } Önkoşul, herhangi bir yöntem çalıştırılmadan önce ConnectionString'in ayarlanması / başlatılması gerektiğidir. Bu önkoşul, IDatabase soyut veya somut bir sınıf olsaydı bir yapıcı aracılığıyla …

9
SOLID ve statik yöntemler
Sık sık karşılaştığım bir sorun var: Ürün sınıfı olan bir web mağazası projesi olsun. Kullanıcıların bir ürüne yorum göndermesine olanak tanıyan bir özellik eklemek istiyorum. Bu yüzden bir ürünü referans alan bir Review sınıfım var. Şimdi bir ürün için tüm değerlendirmeleri listeleyen bir yönteme ihtiyacım var. İki olasılık vardır: (A) …

4
Tasarım kalıpları ve OOP uygulamaları üzerine düşünme, dinamik ve zayıf yazılan dillerde nasıl değişir?
Zaten bu çizgiler boyunca oldukça yararlı bir soru var (" OOP Olmayan Tasarım Desenleri? "), Ancak dinamik ve zayıf yazılan dillerle yeni başlayan biri için geçiş bakış açısını merak ediyorum. Yani: Diyelim ki yıllardır C ++, C # veya Java'da program yapıyorum ve GoF tasarım desenleri, Fowler'in Kurumsal Uygulama Mimarisi …

3
Arabirim ayırma ilkesi somut yöntemlere uygulanır mı?
Arabirim ayırma ilkesi, hiçbir istemcinin kullanmadığı yöntemlere bağımlı olmaya zorlanmamasını önerdiğinden, bir istemci arabirim yöntemleri için boş bir yöntem uygulamamalıdır, aksi takdirde bu arabirim yöntemi başka bir arabirime yerleştirilmelidir. Peki somut yöntemlere ne dersiniz? Her müşterinin kullanamayacağı yöntemleri ayırmalı mıyım? Aşağıdaki sınıfı düşünün: public class Car{ .... public boolean isQualityPass(){ …

2
SRP'yi izlerken, varlıkların doğrulanması ve kaydedilmesi ile nasıl başa çıkmalıyım?
Ben okuyordum Temiz Kodunu son zamanlarda KATI hakkında ve çeşitli çevrimiçi makaleler ve ben hiçbir şey bilmiyorum gibi ne kadar fazla okumak, daha hissediyorum. Diyelim ki ASP.NET MVC 3 kullanarak bir web uygulaması inşa ediyorum. Diyelim ki böyle UsersControllerbir Createeylem ile bir var : public class UsersController : Controller { …

3
SOLID ilkelerini kullanırken geliştiriciler için keşfedilebilirlik bir sorun oluşturuyor mu?
Diğer tüm geliştiricilerin temel CRUD uygulamaları yapmaya alışkın oldukları veya yalnızca güzel / fonksiyonel arayüzler yapmaya odaklandıkları iş uygulamaları serisi yapıyorum ve aşağıdakileri çok alıyorum. "Bunu yapmak için kullandığımız yolla Çalışan, bir çalışanla yapabileceğiniz her şeye sahip olacaktır." Ve bu doğruydu. Bir "Sınıf" binlerce satır kod vardı ve bir çalışan …
10 solid  crud 

5
Gerçek dünya değerini temsil eden bir sabiti güncellemek Açık-Kapalı Prensibinin ihlali midir?
İşçilerin yıllık net gelirini hesaplayan bir sınıfım var. Vergi yüzdesini temsil eden bir sabiti vardır. Ancak bir gün vergi oranı değişti, bu yüzden kodu düzeltmem gerekiyor. Bu sabiti düzeltme eylemi, bir sınıfın modifikasyona kapatılması gerektiğini varsaydığı için Açık-Kapalı Prensibinin ihlal edildiğine işaret ediyor mu?


2
Arayüz Ayrıştırma Prensibi: Arayüzler arasında önemli bir çakışma varsa ne yapmalı?
Gönderen Pearson Yeni Uluslararası Sürüm: Çevik Yazılım Geliştirme, İlkeleri, Desenleri, ve Uygulamaları : Bazen, farklı müşteri grupları tarafından çağrılan yöntemler çakışır. Örtüşme küçükse, gruplar için arayüzler ayrı kalmalıdır. Ortak işlevler, çakışan tüm arabirimlerde bildirilmelidir. Sunucu sınıfı, ortak arabirimleri bu arabirimlerin her birinden devralır, ancak yalnızca bir kez uygular. Bob Amca, …

2
“Sadece neye ihtiyacınız olduğunu sor” arayüz prensibi var mı?
Temel olarak "sadece neye ihtiyacınız olduğunu sorun" diyen arayüzleri tasarlamak ve tüketmek için bir prensip kullanarak büyüdüm. Örneğin, silinebilecek bir grup türüm varsa, bir Deletablearayüz yapacağım : interface Deletable { void delete(); } Sonra genel bir sınıf yazabilirsiniz: class Deleter<T extends Deletable> { void delete(T t) { t.delete(); } } …

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.