SOLID Principles
SOLID ilkeleri, geliştiricilerin korumak, genişletmek, genişletmek ve test etmek için daha kolay sistemler yaratmalarına yardımcı olan beş nesne odaklı tasarım kılavuzudur. 2000'lerin başlarında Robert C. Martin tarafından tanıtıldı ve bu nedenle modern yazılım mimarisinin temel bir parçası haline geldi.
- [FONT=0) Tek Sorumluluk Prensi (SRP): Bir sınıf sadece tek bir değişiklik için bir nedene sahip olmalıdır, yani tek bir işlevsellikten sorumlu olmalıdır.
- [FONT:0)Open/ Closed Prens (OCP): ) Sınıflar uzatma için açık olmalıdır ancak değişiklik için kapalı olmalıdır - mevcut kodu değiştirmeden yeni davranışlar ekleyebilirsiniz.
- [FONT:0)Liskov Substitution Prensliği (LSP): ), Alttipler sistemi bozmadan temel türlerine yönelik altüst olmalıdır.
- [FONT:0) Interface Segregation Prens (ISP): ), Müşteriler, kullanmadıkları arayüzlere bağlı olmak zorunda kalmamalıdır; büyük, genel amaçlı arayüzlerden daha iyi, özel arayüzlere sahip olmak.
- [DIP:0)Dependency Invers Prensipleri (DIP): [DFLT:1) Yüksek seviyeli modüllere bağlı olmamalıdır; her ikisi de soyutlığa bağlı olmalıdır. Abstractions to depend on details - details should depend on abstractions.
UML'nin Yazılım Mimarisinde Rolü Görselleştirme
Birleşik Modelleme Dili (UML), tasarımların geliştiriciler, mimarlar ve paydaşları arasında paylaşılan bir dil olarak nasıl hareket ettiğini ortaya koyar.PID-compliant mimarilere uygulandığında, UML diyagramları tasarım ilkelerine nasıl bağlı olduğunu ve yeniden faktörlemeye ihtiyaç duyabilecek alanları vurgular.
UML 14 diyagram türü içerir, ancak SOLID görselleştirmenin en alakalısı sınıf diyagramları, bileşen diyagramları, dizi diyagramları ve paket diyagramlarıdır.Her bir diyagram türü ilkelerin farklı yönlerini vurgulayabilir - örneğin, sınıf diyagramları sınıf sorumlulukları ve arayüzleri, bileşen diyagramları bağımlılık yollarını ve aşırılık noktaları vurgularken.
UML Diagrams'ı her SOLID Prensibine Haritalamak
Tek Sorumluluk Prensipleri ve Sınıf Diagramları
Sınıf diyagramları SRP uyumluluğunu doğrulamak için idealdir. İyi tasarlanmış bir sınıf diyagramı her sınıfı açık, özelliklerin ve yöntemlerin setine odaklanır.Bir sınıfın birden fazla sorumlulukları varsa, diyagramdaki kutusu ilgili işlemleri içerecektir - SRP ihlalleri için kırmızı bayrak.
Örneğin, "In faturaManager" isimli bir sınıf hem fatura hesaplamasını ve e-posta gönderme SRP'yi ihlal ediyor. Sınıf diyagramı, "konuşturma" ve "InTelegramCalculator" olarak sınıfları bölmeye ihtiyaç duyar.
Açık / Kısa Prensip ve Kombinasyonlar
Kompiyon diyagramları, bir sistemin yüksek seviyeli yapısını gösterir, bileşenleri (örneğin, modüller, alt sistemler) arayüzlerle bağlantı kurar. OCP'ye uymak için, bileşenler mevcut olanları değiştirmeden sabit arayüzler ortaya koyar.
Bir bileşen diyagramında, bunu sağlanan ve gerekli arayüzler kullanarak temsil edebilirsiniz. A "PaymentProcessor' bileşeni, örneğin, bir "Payment" arayüzü tanımlanabilir. Yeni ödeme yöntemleri (kredi kartı, PayPal) bu arayüzü uygulayan ayrı bileşenler olarak eklenir.The diagram it open operator does not need to change - it only depends on the abstraction.
Liskov Altung Prensipleri ve İnheritance Hierarchies
miras ilişkileri ile sınıf diyagramları doğrudan LSP test eder.Eğer alt sınıf aşırı sınıf aşırı sınıf sınıf yöntemleri beklenen davranışları ihlal etmenin yollarının üzerinde, hiyerarşi şüphelidir. UML, ön koşullar, ön koşullar ve kısıtlamalar kullanarak, kısıtlamalar kullanmanıza olanak tanır (örneğin, notlar veya OCL – Object Constraint Language).
Klasik LSP ihlali, “Rectcut’tan miras alan bir ‘Square’ sınıfıdır. Eğer “Square’ değişiklikleri “setWidth()’i ayrı “Square’ uygulamaları da ayarlarsa, o zaman “Square’nin gerçekten de altüst olmadığını göstermelidir.
Interface Segregation Principles and Interface Diagrams
UML, arayüzleri açıkça arayüz kutularını kullanarak modelleyebilir ([Dönetici:0] “gülüşme” stereotiplerini uygulamak için, büyük bir arayüz yerine çok küçük arayüzler oluşturabilirsiniz.
Örneğin, "MultiFunctionYazer" arayüzünün "print()" ile bir "The Print", "Uygun", "Scannable" ve "Faxable" gibi bir "BasicYazer" olduğunu gösterir, “Gelişilebilir”, “GelinmişYazarın tüm üç tane uygular.Bu yaklaşım, müşterilerin soruşturmalarına bağlı olarak bağımlı olmalarını sağlar.
Bağımlılık Prensipleri ve Bağımlılık Diagramları
Her iki sınıf diyagramları ve paket diyagramları DIP uyumluluğunu gösterebilir. DIP yüksek seviyeli modüller (örneğin, iş mantığı) düşük seviyeli modüllere (örneğin, veritabanı sürücülerine bağlı olmamalıdır).
Bir paket bağımlılık diyagramında, bağımlılıkların yönünü gösterebilirsiniz. Yüksek seviyeli bir paket puanları doğrudan düşük seviyeli bir pakete işaret ederse, diagram bir DIP ihlali uyarısı. Çözüm yüksek seviyeli bir pakette (interface) bir özetleme (interface) tanıtmaktır.
SOLID Mimarisi için UML Diagramları Oluşturmak için En İyi Uygulamalar
Bu yönergeleri SOLID prensiplerini güçlendiren temiz, bilgilendirici UML diyagramları üretmek için izleyin:
- [FONT:0]Dönemli ve notlar:[Dönem: 1) Uygulamanın “[Dön:2] “[Dönem: ﴾0] ve “<
“[Döneticileri açıklama notları ekle, bir sınıfın neden sadece bir sorumluluğu olduğu gibi. - [FONT:0)Keep diagrams odaklanmış:[Dönem: 1) Tek bir diyagram tek bir ilkeye veya küçük ilgili ilkeleri ele almalıdır. Her sınıf bir dev diyagrama kram etmekten kaçının.
- [FONT:0]Sadece ilgili ilişkiler:[Dönetici:[Dönetici, birlik, aggregasyon ve önemli olan oklarla aşırı yükleniyor.
- [FONT:0) Yüksek ışık ihlalleri:[DFLT:1] sorunlu ilişkileri işaret etmek için farklı renkler veya baraj hatları kullanın. Örneğin, yüksek seviyeli koddan kırmızı bağımlılık bir ok DIP ihlali bayrağını açabilir.
- [FONT:0]Refaksiyonla İttifak:[Dönetici:0)[Dönetici:0))))[değiştir | kaynağı değiştir]: [Döneticileri / UML, bir kez çizerken, kodun bir arkadaşı olarak tedavi etmek.
Ortak Pitfalls ve Them'dan Nasıl Kaçırmak
Deneyimli geliştiriciler bile UML'yi SOLID mimarilerini tasarlamak için kullanırken tuzaklara düşebilir. İşte onları yönlendirmenin sık sık hataları ve yolları:
- [FONT:0)Genellikle erkenden: Çok fazla arayüz veya sınıfla başlayın YAGNI (You Aren't Gonna Need It) Basit bir sınıf diyagramı ile başlayın, sonra sadece SOLID ilkeleri tarafından gerekli olduğunda - genellikle refaksiyon sırasında.
- [FONT:0) UML'nin notasyonuna uygun olarak: Yanlış ok türleri (örneğin, bir okçuluk doğru olduğu genelleştirme okunu kullanarak) yanlış yorumlayabilmeye yol açabilir. Çalışma UML 2.5 temelleri belirsizliği önlemek için temelleri analiz eder.
- [FONT=0) LSP'yi dizi diyagramlarda görmezden gelmek: Sequence diagramları koşu zaman etkileşimleri gösterir. alt sınıf bir nesne için yedeklenir ve etkileşim değişiklikleri beklenmedik bir şekilde LSP kırılır. alt sınıf örneklerle doğrulama dizileri.
- [FONT:0) Bağımlılık yönüne dikkat edin: [DIP: 0,8|Döneticileri paket diyagramlarında, her zaman sunucudan okları sunucuya çizerseniz.Eğer döngüleri veya okları yanlış şekilde işaret ederseniz, soyutlamaları yeniden yorumlayın.
- [FONT=0)Making diagramları çok ayrıntılı: Her bir toplayıcıyı gösteren ve görünürdeki genel arayüzlere ve SOLID ilkelerine dayanan önemli ilişkilere odaklanın.
UML Diagrams oluşturmak için araçlar
Çeşitli araçlar, kodla senkronize kalan UML diyagramları oluşturmanıza yardımcı olabilir. İş akışınıza uyan birini seçin:
- [FONT=0)PlantUML:[Dönetici:0]Exp:0)Exp:0|Döntme:0|Döntmeler yaz ve diyagramlar otomatik olarak üretir.The Ideal for team that want diagrams as code...]
- [FONT:0]Draw.io (diagrams.net): Özgür, web tabanlı diyagram editörü. Destekler UML stencils ve kolay ihracat için iyi.
- [FONT:0)Lucidchart: [Dönt: [Döntilmiş: [Dönem: 1] UML ve gerçek zamanlı işbirliği ile ücretli bir platform. Confluence ve Jira ile entegrasyon.
- [FONT=0)Modelio:[[Dönetici: UML ve BPMN'yi destekleyen açık kaynak modelleme aracı, sınıf diyagramlarından kod üretebilir ve mevcut kodu tersine çevirebilir.
- [FONT=0)IntelliJ IDEA Ultimate:) Sınıf, paket ve bağımlılık diyagramları için inşa edilmiş özellikleri içerir. doğrudan canlı senkronizasyon için kodbase ile çalışır.
SOLID ilkeleri ve UML entegrasyonu hakkında daha derin bir anlayış için, Robert C. Martin'in orijinal yazısını [[0) ► The Principles of OOD (PDF)) ve Wikipedia makalesi [Dönemli:2).
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
UML diyagramları, geliştiricilerin inceleyebileceği beton görsel modellere soyut SOLID ilkeleri dönüştürür, tartışır ve geliştirir. Her ilkeyi uygun diyagram türüne haritalayarak - SRP ve ISS için sınıf diyagramları, OCP ve DIP için bileşenler diyagramları ve miras hiyerarşileri - mimarlıkınız esnek, kullanılabilir ve ölçeklenebilir.
Anahtar UML'yi bir bürokratik sanat olarak değil, kodunızla gelişen canlı bir araç olarak kullanmak. Otomatik diyagram nesli ve düzenli kod yorumları ile birlikte UML, SOLID-compliant sistemleri inşa etmek için güçlü bir müttefik haline gelir.