Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Derek Comartin
C#'ta sürdürülebilir kod yazmaktan bahsettiğimizde, sıkça ortaya çıkan temel kavramlardan biri DRY prensibidir — Don't Repeat Yourself. Yazılım geliştirmede kod tekrarını ortadan kaldırmayı, kod çoğaltımını azaltmayı ve kod sürdürülebilirliğini artırmayı hedefleyen bir sütundur.
Ancak birçok tasarım ilkesi gibi, DRY yanlış anlaşılabilir ve hatta yanlış uygulanabilir. DRY ilkesi neden kod tabanınızı berbat mı ediyor? videosunda, CodeOpinion.com'dan Derek Comartin, DRY ilkesinin nasıl kullanılması ve kullanılmaması gerektiğine dair açık ve gerçekçi bir bakış sunar — özellikle .NET Core veya benzer ekosistemlerde geliştirme yaparken.
Bu makalede Derek'in açıklamalarına derinlemesine dalacağız, videodan geçen örneklerini ve yorumlarını adım adım inceleyerek. Visual Studio'da yeni bir projeye başlamış olun, mevcut bir kod tabanını sürdürüyor olun, ya da daha iyi kod tekrar kullanılabilirliği için yeniden düzenleme yapıyor olun, Derek'in içgörüleri pratik ve alakalıdır.
Derek, videonun başlangıcında birçok geliştiricinin karşılaştığı durumu çerçeveler: değiştirilmesi zor olan bir sistemle uğraşma — tekrarlanan kod ve gereksiz mantık yığını karmaşık bir hale gelir.
C#'ta DRY ilkesini kod tekrarını azaltmak için bir strateji olarak tanıtır, ancak bunun sıkça yanlış yorumlandığını belirtir. Derek, 0:28'de şöyle açıklar:
"DRY başarıyla uygulandığında, sistemin herhangi bir tek unsurunda yapılan değişiklik, mantıksal olarak ilgisiz unsurlarda değişiklik yapılmasını gerektirmez."
Bu ayrım kritiktir. DRY prensibi, sadece kod tekrarlığını önlemeyi değil, aynı zamanda endişelerin ayrılması ve uygun kod tekrar kullanılabilirliğini teşvik etmeyi hedefler — sürdürülebilir, kuru kodlar test edilmesi ve yeniden düzenlenmesi daha kolaydır.
Somut hale getirmek için Derek, C#'ta basit bir örnek sunar. İki yöntem yazar:
ShipDistance
TollDistance
Her biri mil cinsinden mesafeleri hesaplar, ardından bu mesafeleri kilometreye çevirir — her iki yöntemde de aynı mantığı kullanarak. Bu, klasik bir kod tekrarıdır.
Derek, aynı kod parçasının birden fazla yerde yer almak yerine, dönüştürme mantığını özel bir metot olan — MilesToKilometers() — içine çıkarmayı gösterir; kodu tekrar kullanılabilirlik için yeniden düzenlemenin temel ama etkili bir yolu olarak.
Bunu, tipik bir konsol uygulaması yapısını kullanarak gösterir: bir sınıf Program ile bir static void Main. Bu, tüketiciden girdi alma senaryolarını test etmek veya bir gösterim yapmak gibi geliştirme yaparken birçok geliştiricinin kullandığı bir yapı türüdür.
Mantığı tekrar kullanılabilir bir metoda veya ayrı bir sınıfa soyutlamak ideal görünebilir, ancak Derek dikkatli olunmasını önerir. DRY'ın aşırı kullanılması, özellikle tüm uygulama boyunca, tehlikeli seviyelerde bağlanma ile sonuçlanabilir.
Örneğin, birden fazla proje tarafından kullanılan bir paylaşılan araç kutusu içine dönüştürme mantığını yerleştirdiniz ve daha sonra yuvarlama davranışını veya ondalık hassasiyetini değiştirirseniz, bu değişiklik birçok alanı beklenmedik bir şekilde etkileyebilir. Derek, 2:31'de şöyle der:
"Müşteriler iki ondalık basamak bekliyor mu? Bunu sıfır olarak değiştirsek ne olur?"
Bu, çeşitli alanlarda kullanılan kesişen bir endişedir — birçok sistemi tarafından tekrar kullanılan mantık — ve bu, erken veya net sınırlar olmadan merkezi hale getirmenin riskini gösterir.
Gevşek Bağlantı İlkesi
DRY kötü kullanıldığında ortaya çıkan başka bir sorun, kod yığınıdır — her şeyi soyutlamaya çalışmanın şişkin araç sınıflarına veya aşırı generik yöntemlere yol açtığı durumlar. Derek, mantığının aşırı DRY hale getirilmesinin yarardan çok zarar getirebileceğini, özellikle büyük sistemlerde bir alanındaki hata düzeltmelerinin paylaşılan bağımlılıklar nedeniyle diğerlerini bozabileceğini uyarır.
Derek'e göre anahtar, ne zaman kod paylaşılmaması gerektiğini bilmektir — özellikle sıkı bağlı modüllerle sonuçlanıyorsa. DRY bir kural değil; bir kılavuzdur ve bağlamla kullanılmalıdır.
Derek, geliştiricinin ortak bir eğilimini tanımlar: sistemleri tamamen Truck, Order, Driver, ve Shipment gibi varlıklar etrafında organize etme. Farklı yöntemler arasında aynı sınıfı veya nesneyi tekrar kullanmak cazip olabilir, ancak bu genellikle kavramları tekrarlamaya ve istenmeyen bağlanmaya yol açar.
Veri yapılarının değil, iş yeteneklerinin mimariyi yönlendirmesi gerektiğini savunur. Örneğin, "bir siparişi yönlendirmek" "bir treyler'ı sökmek" ile ilgili olsa da farklı bir endişedir.
4:45'te Derek şöyle açıklar:
"Sisteminizdeki tek bir varlık, birden fazla kavramın temsilcisi olmamalıdır."
Bu, daha derin bir mimari içgörünün altını çizer: aynı adı taşıyan varlıklar (Vasıta, Treyler) farklı iş akışlarında farklı sorumlulukları temsil edebilir. Onları birbirinin yerine kullanmak, kafa karışıklığı yaratır ve ilişkisiz iş mantığını sıkı bir şekilde bağlar.
Bunu çözmek için Derek, iş yetenekleri etrafında uygulamaları yapılandıran bir model olan Dikey Dilim Mimarisini (VSA) tanıtır. Her "dilim", belirli bir eylem veya kullanım durumu için gereken her şeyi içerir — istekten veri tabanına kadar — kapsüllenmiş ve kendine yeten biçimde.
Derek, bir dilim içinde DRY kodunun iyi olduğunu, ancak dilimler arasında DRY uygulamanın dolanmış bağımlılıklara yol açabileceğini vurgular. 6:44'te ekler:
"Sadece bağlanmayı azalmak, uyumu artırmakla ilgili... ve bunu yapmanın bir yolu şu şekildedir: sınır içinde kavramları tekrarlamamak." Bu sınır temelli düşünce size esneklik verir.
Bir dilimde tam bir alan modeli olabilir, diğerinde ise sadece hafif bir veri modeli olabilir. Bu, dilimin ihtiyaçlarına bağlıdır — Pragmatik Programcı felsefesi ile uyumlu pragmatik bir yaklaşımdır. Derek, DRY'ı bir araç, bir yasa olarak değil, yeniden çerçevelerken kapanır.
7:00'de şöyle der: "Sadece nasıl uyguladığınızı anlamakla ilgili.
Yoğun bir şekilde uygularsanız, potansiyel olarak daha fazla bağlanmanız olur." O doğrulama mantığını, bağlantı dizisini veya tekrarlayan kodu ayrı bir metoda dönüştürmeden önce, bunu yapmanın tüm kod tabanınızı daha sürdürülebilir hale mi getireceğini — yoksa sadece değiştirmenin zor mu hale getireceğini düşünün.
Derek Comartin'in C#'ta DRY ilkesini ele alışı, dikkatle ele alınmazsa basit bir kuralın nasıl geri tepebileceğini gösterir.
Kod örnekleriyle, pratik senaryoları tartışarak ve yazılım tasarım ilkelerini vurgulayarak, yeniden kullanılabilirlik ve modülerlik arasında ihtiyaç duyulan dengeyi ortaya koyar. Geliştirme sürecinizi önemli ölçüde geliştirmek için, unutmayın:
DRY'ı, belirgin bir sınır içinde tekrarlayan kodu yeniden düzenlemek için kullanın.
Farklı iş amaçlarına hizmet eden varlıkları DRY yapmayın.
Mantığı merkezi hale getirirken bağlamı göz önünde bulundurun — özellikle birden fazla yer veya proje üzerinden.
Birim testi düşünün ve bağımlılık enjeksiyonunun paylaşılan kodu nasıl etkileyebileceğini göz önünde bulundurun.
Bu dersleri uygulayarak, daha verimli, modüler ve sürdürülebilir C# kodu yazarsınız — kod tabanınızı tekrarlayıcı mantık ve dolanmış bağımlılıklarla dolu bir fare yuvasına dönüştürmekten kaçınırsınız.
Derek Martin'in tam videosu için CodeOpinion'ın YouTube kanalında daha fazla içgörü bulabilirsiniz.
[{academy-video-youtube({"vid": "QoK7jSZ-viw", "start_time": "0", "title": "Enums kötü değil.
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy