Neden SOLID hala Junior Geliştiriciler için önemli

Yazılım mühendisliği takımları kod kalitesine yoğun yatırım yapıyor çünkü kötü yapılandırılmış kod, kariyerlerinde daha hızlı bir şekilde geri ödenebilir.The SOLID ilkeleri - Robert C. Martin tarafından paylaşılan bir zaman testiable, test edilebilir ve adapte edilebilir bir şekilde yapılandırılabilir.Bu ilkeleri kariyerlerinde erkenden önce, karmaşık sistemlerle pratik ilkelerin geliştirilmesi ve temellendirilmesi için bir temel teşkil edebilir.

SOLID İlkeleri Nedir?

Öğretim yöntemlerine dalmadan önce, genç geliştiricilerin beş ilkeyi anlamasını sağlamak önemlidir. Her ilke belirli bir tasarım endişesiyle ilgilidir ve birlikte nesne odaklı programlamaya karşı bir yaklaşım oluştururlar. İşte hızlı bir referans:

  • [FONT:0)S – Tek Sorumluluk Prensi (SRP): Bir sınıf veya modül, programın işlevselliğinin tek bir parçasından sorumlu olması gerektiği anlamına gelir.
  • [FONT:0)O – Açık / Kısa Prensip (OCP): ) Yazılım varlıkları uzatma için açık olmalıdır ancak değişiklik için kapalı olmalıdır. Mevcut kod değiştirmeden yeni davranışları ekleyebilmeniz gerekir.
  • [FONT:0)L – Liskov Altung Prensi (LSP): [Döneticileri temel türleri için altüst olmalıdır. Bir müşteri temel sınıfını beklerse, herhangi bir tür sınıf müşteriyi bozmadan çalışmalıdır.
  • [FONT=0)I – Interface Segregation Prens (ISP): ), Hiçbir müşteri kullanmadığı yöntemlere bağlı olmak zorunda kalmamalıdır. Interfaces, büyük ve genel olarak küçük ve özel olmalıdır.
  • [DNT:0)D – Bağımlılık Prensipleri (DIP): [DFLT:1) Yüksek seviyeli modüller düşük seviyeli modüllere bağlı olmamalıdır; her ikisi de soyutlığa bağlı olmalıdır; detaylar soyutlamalara bağlı olmalıdır.

Bu ilkeler katı kurallar değildir, ancak tasarım yönergeleri tasarlar. Junior geliştiricileri genellikle niyet anlayışı ile acronym'ı karıştırır.Gerçek öğrenme her prensibini eylemde gördüklerinde gerçekleşir.

Acronym Neden Yanlış Olabilir

Ortak bir hata, SOLID'yi bir kontrol listesi olarak siparişte uygulanacaktır. Uygulamada, ilkeler birbirine bağlı. Örneğin, Single Sorumluluk Prensibine genellikle, Interface Segregation Prensibini takip eden daha küçük sınıflara yol açar.

SOLID İlkeleri için Etkili Öğretim Stratejileri

Atölyeler, kod katas ve yeniden faktörleme seansları, yalnızca derslerden daha etkilidir. Aşağıda genç geliştiricilerle iyi çalışan stratejiler genişletilir.

1. Gerçek Dünya Analoglarını Kullanın

Her ilkeyi günlük nesneler veya süreçlere yeniden yükleyin. Örneğin:

  • [FONT:0]SRP:[Dönetici:[Dönetici:0) İsviçre Ordusu bıçağı her şeyi yapmaya çalışır, ancak hiçbiri iyi değildir. Bir mutfak bıçağı daha iyidir, çünkü bir iş (kesinlikle) aynı şekilde, veritabanı erişimini ele alan bir sınıf ve e-posta göndermesi, değişime zor.
  • [FONT:0)OCP:[Dönetici:[Dönetici:0) Bir duvar çıkışı uzatma için açık (yeni cihazlara yapıştırabilirsiniz) ancak değişiklik için kapatınız (her seferinde kabloyu yeniden yazamazsınız).
  • [FONT:0)LSP:[Dönetici: 0,3|0|0] Bir kuş tabanı sınıfı varsa uç() yöntemi, tüm alt sınıflar (Penguin, Sparrow) uçabilmeli. Penguins uçamıyor, bu yüzden kuş, uçamaz bir arayüze ayrı uçabilir.
  • [FONT:0)ISP: [Dönetici: 0:1] Baskı, tarama ve faks yöntemleri uygulamak için ihtiyacınız olan çok işlevli bir yazıcı, yalnızca baskıya bağlı olarak kullanılan yöntemlere bağlı olarak, her bir yetenek için ayrı arayüzlere sahip olmanız gerekir.
  • [FONT:0)DIP:[[DFLT:1] Bir geliştiricinin doğrudan bir hataya geçiş yapması yerine, bir sokete (abstraction) teller.Bulb hem de kaset standardına bağlı olarak, diğerine bağlı değildir.

2. Hands-On Refaksiyon Egzersizleri

Kötü tasarlanmış bir kod parçaları sağlayın (bir tek sınıf çok fazla, büyük arayüzler, beton bağımlılar) ve her bir adıma adım atarak gençleri geri çağırmak. Örneğin, bir veritabanı, formatlar HTML ve e-posta göndermek için onlara sorun. #0Refaksiyon Guru[Dönetici) ve [[Döneticileri) Web sitesi, her bir sorumlulukla tekrarlamanın nasıl daha kolay test ve modifikasyonu nasıl tartışır.

3. Yetkin Öğrenme: Bir Zamanda Bir Prensip

Tek bir oturumda tüm beş ilkeyi tanıtmayın. SRP ile ilgili en az bir gün geçirin, çünkü SRP'nin kendi kodunda ihlalleri tespit etmek ve elde etmek için en kolay sınıfları gösterir. OCP, LSP, vs. Her yeni prensip, öncekilerde inşa etmelidir. Örneğin, SRP'ye öğretmenlik yaptıktan sonra, gençleri kendi kodunda ihlalleri tespit etmek için sorun.

4. Görsel Yardımlar ve Diagrams Kullanın

UML sınıf diyagramları görsel ilişkilere yardımcı olabilir. "Daha önce" bir diyagramı, farklı bağımlılıklara birçok okla farklı bağımlılıklara işaret ediyor ve "Bir sonraki" diyagramı, arayüzlere bağlı olarak tek bir fark sınıfla.Use a whiteboard or tool likeurFLT:0).Draw.io).

5. Kod Yorumlarına Entegrasyon

Kod incelemeleri, SOLID'yi yeniden başlatmanın mükemmel ortamıdır. Bir genç geliştiricinin çekme talebini gözden geçirdikten sonra, belirli ihlallere işaret eder ve şöyle yazar: “Bu sınıf yükleri verileri, onu yakalamaya başlar ve üç sorumluluk yazar.Eğer çıktı formatı değiştirmemiz gerekiyorsa,?”

6. Pair Programlama Seansları

Pair, günde 30–60 dakika boyunca üst düzey bir geliştirici ile genç bir geliştirici. Oturum sırasında, üst düzey tasarım kararlarını özetleyebilir: "Bu bağımlılığı bir arayüze dönüştürüyorum, böylece uygulamalarımızı değiştirebiliriz."

Common Pitfalls When Öğretim SOLID

İyi stratejilerle bile, genç geliştiriciler yanlış anlamaları geliştirebilirler. Bu tuzakların farkındalığı, eğitimcilerin yaklaşımlarını ayarlamalarına yardımcı olur.

Over-Mühendislik ve Prematür Özeti

Junior geliştiricileri her şey için arayüzler oluşturmaya başlayabilir ve sınıfları küçük parçalara ayırarak, aşırı bir şekilde yönlendirmeye yol açabilirler.Onlara SOLID'nin bir kılavuz olduğunu öğretin, bir hukuk değil. Küçük, odaklanmış sınıflar iyi, ancak sadece esneklik için gerçek bir ihtiyaç olduğunda.Use YAGNI (You Ain't Gonna Need It) bir karşı bir arayüz sadece en az iki olası uygulama veya testlere karşı alay etmeniz gerektiğinde tanıtıldı.

Liskov Altung Prensibini Yanlış

LSP en kavramsal olarak zor bir ilkedir. Juniors genellikle genişliği = sekizinci tutmak anlamına gelir, ancak davranışsal altlama ile ilgili koddur. tipik bir hata, belirli bir Width ve setHeight yöntemleri ile sınıf sahibi olabilir ve aİLFLT:8 alt sınıfları daha fazla ayrımcılığa sahip olmak için daha güvenli bir yaklaşım, LSP'yi ihlal eder.

Bağlanma Bağlanma Bağlanmanın Bağlanmasına İlişkin

Bağlanma Enjeksiyonu (DI), Bağımlılık Prensipleri (DIP) uygulamak için bir tekniktir, ancak sınıfın hala beton bir sınıfa bağlı olduğunu (violating DIP) düşünebilir, çünkü DIP'in bir arayüze bağlı olarak tekrarlayıcı olduğunu düşünebilir.

Pratik Kod Örnekleri (Without Full Syntax)

Kod blokları doğrudan gömemeyizken, kod değişiklikleri açıkça tarif edebiliriz. Aşağıda SRP ve OCP için yeniden faktörleme göstermek için birbbreviated Python-like parçaları var.

SRP Örnek Before Before

[[Dörtücükler, s.) ⁇ . ⁇ . ⁇ . ⁇ . ⁇ . ⁇ : ⁇ . ⁇ . ⁇ : ⁇ . ⁇ . ⁇ . ⁇ . ⁇ . ⁇ . ⁇ . ⁇ . ⁇ . ⁇ . ⁇ . ⁇ . ⁇ . ⁇ .com.tr|s.com/tr|s.com/tr|s.com/tr|s/tr|s.

OCP Örneği Önce

[FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=I=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=I=I=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=

DIP Örnek Önce

[FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=I)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

Dış Kaynaklardan Yararlanmak

Öğrenme bir atölyeden sonra durmuyor. gençlerle yüksek kaliteli referanslar paylaşıyor, böylece bağımsız olarak öğrenmeye devam edebilirler. İşte birkaç güvenilir kaynak:

  • [0] Robert C. Martin'in orijinal makalesi "Design Principles and Design Desenleri" ) – kesin kaynak, yoğun olsa da.
  • [0]"Temiz Mimarlık" Robert C. Martin) tarafından - SOLID ve mimari düşünce üzerinde genişleyen pratik bir kitap.
  • [FONT:0]Refaktoring Guru'nun Tasarım Desenleri[[Dönetici:0) - SOLID ile nasıl desenlerin ilişkili olduğunu gösteren mükemmel interaktif açıklamalar.

Encourage juniors to read one section per week and try to define SOLID bağlılık in their existing codebase. Ayrıca, benzer bir okuma listesi kullanarak paylaşılan bir okuma listesi oluşturabilirsiniz.[0]Notion) veya bir ekip wiki.

İlerlemenin Ölçülmesi

Öğretiminizin etkili olup olmadığını nasıl biliyorsunuz? gibi işaretlere bakın:

  • Junior geliştiricileri, PR'leri göndermeden önce gönüllü olarak yeniden faktör kodu.
  • "abstraction", "interface", "bağışta bağımsızlık" veya tasarım tartışmalarında kelimeler kullanmaya başlarlar.
  • PR'lerdeki değişim talepleri, tasarım ihlalleri ile ilgili olarak zamanla azalır.
  • Neden SOLID terminolojisi kullanarak özel bir tasarım seçimi yaptıklarını açıklayabilirler.

Son çalışmalarını incelediğiniz ve “Bu sınıf daha basit olabilir mi?” öğrenmelerini güçlendirebilir. Takıma yaptıkları bir yeniden faktörlemeyi düşünün, daha önce ve sonra açıklamayı düşünün.

Junior Developers'ten sıkça sorulan sorular

S: Her zaman SOLID'yi takip etmek zorunda mıyım? Projem küçükse ne olur?

Küçük projeler için, katı bağlılık aşırı uçabilir. Prensipler kodbase ve takım büyüdükçe daha değerli hale gelir: Bir ihlal acıya neden olur (daha sık sık sık değişiklikler diğer kısımları kırarsa), o zaman prensibi uygulayın.SRP ve OCP ile başlayın çünkü en acil fayda sunar.

S: Birçok küçük sınıfları ihlal eden bir "manager" sınıfı olması iyi midir? SRP'yi ihlal eden bir şey değil mi?

Orkestram yasal bir sorumluluktur. Yönetici sınıfının değişmesinin tek nedeni, alt sorumluları nasıl koordine ettiğidir (her bir bileşenin mantığı değil), örneğin, anİLFLT:30’un fatura hizmeti, ödeme hizmeti ve bildirim servisini aradığını varsayar.

S: SOLID'yi işlevsel programlama ile kullanabilir miyim?

SOLID, OOP ile zihinde tanımlandı, ancak benzer ilkeler işlevsel programlamada uygulanır. Örneğin, saf bir işlev SRP ile bir sınıf için analogdır - bir şey yapar. Bağımlılığı genellikle işlevleri parametreler olarak geçmek için tercüme eder (görüntüleme enjeksiyonu).

Bir SOLID Kültürü

SOLID'in bir zaman etkinliği değildir. Bu kültürün inşa uygulamalarını göz önünde bulundurmak gerekir:

  • [FONT:0) Done'nin Açıklaması:[Dönetici:[Dönetici:0) Bir kontrol olarak SOLID ilkelerini takip edin.
  • [FONT:0)Refaksiyon Saatleri:[Dönem:[Dönem: 1] Dedicate Cuma öğleden sonraları, SOLID ihlalleriyle yeniden faktörlemeye davet edilir.
  • [FONT=0}Kitap Kulübü: [Dönetici: 1] "Temiz Kodu" veya "Head First Design Patterns" birlikte ve SOLID'yi bağlam içinde tartış.
  • [FONT:0)Champions:[[Döneticiler:[Döneticiler dahil) İki veya üç takım üyesini (tekli gençler dahil) SOLID üzerinde çalışan uzmanlar.

Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç

SOLID prensiplerini genç geliştiricilere öğretmek, düşük bakım maliyetlerinden, daha az regresyon ve daha emin ekip üyelerinden daha fazla tasarruf eden bir yatırımdır.Gerçek dünya analogları, artımlı öğrenme, el-on refaksiyonu, kod yorumları ve çift çift çift programlama - soyut kavramlar tangaçlama ve LSP karışıklıkları, pragmatizm ve kademeli uygulama ile başa çıkabilen bir ekip tarafından engellenebilir.