Kod: Sevgili Yedekleme mi yoksa Sevgili Yeniden Kullanım mı?
Yeniden kullanım, yazılım geliştirmenin kutsal kasesiydi. Geliştiricilerin yeniden kullanabileceğini tekrar yazmak zorunda değilsiniz. Bu beklenmedik üretkenlik sıçramalarına izin veriyor, düşünülüyordu. Ancak bu arada çok şey değişti ve gereksiz kod bile avantajlarını gösteriyor. Artıklık özgürlüğü de bir uzlaşmadır.
Yeniden kullanım, doksanlarda nesnelere yönelik iyileştirmenin en önemli vaatlerinden biriydi. Slogan “yazmak yerine kod” idi. Ama gerçekten işe yaramadı. Bugün bile, geliştiriciler hala “Kendinizi Tekrar Etme” (kuru) sloganıdır: Her karar sadece bir kez alınmalı ve kodda birkaç kez gerçekleşmemelidir.
Sorun
Kodun kullanımı zor, yeniden kullanım çok daha fazla. Sonuçta, kod birçok vakaya uyum sağlamalı, yüksek kaliteli, anlaşılması kolay ve iyi belgelenmelidir. Gerekli kaliteye ulaşmak çok karmaşıktır. Bu çaba, yeniden kullanımın ekonomik bir avantaj olduğunu belirtmelidir. Öte yandan, yeniden kullanılabilir kodun üstün kalitesi de yeniden kullanılmanın çok ötesinde avantajlara sahiptir.
Bu zorluklara rağmen, her projede kodun yeniden kullanılması vardır. Her yazılım bir veya diğer açık kaynak kütüphanesi kullanır. Bazı kütüphaneler milyonlarca proje olmasa da binlerce kullanılır. Bu projeler neden bu kadar başarılı? Açık kaynak modelinden ne öğrenebilirsiniz?
Açık kaynaklı bir proje sadece kodun yayılmasını değil, aynı zamanda iyi bir belgeyi ve projedeki yabancılardan gelen değişiklikleri dahil etme sürecini de içerir. Diğer projeler için kitapçılar oluşturan dahili projeler de açık kaynak modelini kullanabilir. Genellikle dahili projeler, satış üretmeyen bir soruna sahiptir, ancak yalnızca para getiren projelere yardımcı olur. Bu nedenle, iç projelerin bütçeleri genellikle sınırlıdır. Ayrıca doğru öncelikleri belirlemekte zorluk çekiyorsunuz. Dahili proje açık kaynak fikirlerine göre düzenlenirse, diğer projeler kod temeline katkıda bulunabilir ve bu nedenle projelerin gereksinimleri ve satış projeleri aracılığıyla projeye öncelik verebilir. Ayrıca araştırma var.
Bazı şirketler sadece bu kütüphaneleri dahili olarak geliştirmek için değil, aynı zamanda temel dahili resimleri açık kaynak olarak yayınlamak için aktarılmıştır: Bu sadece Netflix gibi ABD'li toplumları değil, aynı zamanda Otto, ImmobiGecout veya Hypoport gibi Almanları da içerir. Neden yapmalısın? Sonuçta, kelimenin tam anlamıyla en önemli rekabet avantajını verir. Nedeni: Açık kaynak olarak yayınlanması nedeniyle, projeler kalitelerini daha da artırmalıdır. Ve yazılım diğer projelerde kullanılır. Geribildirim – Örn. B. Kaliteyi daha da artırmak için kullanabileceğiniz projelerden hata ilişkileri. Birçoğu harici geliştiricilerin kodu daha da geliştireceğini umuyor. Ancak bu da nadiren vaka ilişkileri ve hatalar değerli olabilir.
Bu kod ve dokümantasyon kalitesinin pahalı ve karmaşık olması aslında açık kaynak olarak yayınlanmanın yeniden kullanılabilir kodlarına karşı bir konu olamaz – sonuçta, kod dahili olarak kullanılmalıdır. Neden meslektaşlarınızın bir dıştan beklemeyeceğiniz kodu kullanmasını bekliyorsunuz?
Dağıtım bağımlılıkları
Kodun yeniden kullanılmasıyla ilgili tamamen farklı bir sorun var. Bazı durumlarda, kodun yeniden kullanılması dağıtım bağımlılıkları yaratır. Kodun değiştirilmesi, çeşitli hizmetlerin başka bir dağılımını zorladı. Özel örnek: Bir proje, merkezi bir hizmetin kullanımını basitleştirmek için bir kütüphane yazdı. Hizmeti değiştirerek, kütüphane yeni dağıtılan tüm müşterilerde ve hizmetlerde değişmiş olmalıydı. Bir mikro hizmet sistemi olduğundan, farklı ekipler aracılığıyla dağıtılan 50 hizmetten bahsediyoruz. Gerekli değişikliğin ve testlerin hizmet başına yarım gün sürdüğünü varsayalım, bu yüzden 25 pt. Ve bu nedenle hizmetlerin dağılımı koordine edilmelidir. Böyle bir durum yaşayan herkes bir kez kalmak ister.
Yani dağıtım bağımlılıkları bir sorundur. Koca bağımlılığı mutlaka dağıtım bağımlılığına yol açmaz: Hizmet arayüzü aşağı doğru değişirse, müşterilerin eski müşterileri çalışmaya devam ederse, dağıtıma bağımlılık yoktur. Müşteriler dağıtmak için yeni değildir, ancak hala desteklendiği için eski kodla devam edebilirler.
Ortak kod başka nedenlerle sorunlu olabilir. Farklı bileşenlerin ortak bir veri modeli varsa, değiştirilmesi zorlaşır: Bileşenler veri modelindeki değişiklikleri koordine etmelidir – bu değişiklikleri daha karmaşık hale getirir. Bu veri modeli ortak bir müşteri kütüphanesinden kolayca türetilebilir. Aynı şey başka bir teknik kod için de geçerlidir.
Alanın liderliğindeki tasarım, stratejik tasarıma sahip tüm sistemlerin gelişimini inceler. Modelin sınırlı bağlamı, bir etki alanı modelinin yalnızca belirli bir bağlamda geçerli olduğu anlamına gelir. Bir örnek: Bir müşteri için teslimat adresi bir müşteri için geçerlidir, ancak faturalandırma adresi ödeme ve kredi kartları, hesaplar veya PayPal hesapları için ilginçtir. Bu verileri küresel bir modelde değil, sorumlu biçimde kaydetmek mantıklıdır. Dolayısıyla, modüllerin değiştirilmesi daha kolaydır, daha fazla veriye ihtiyaç duyulduğu ödeme sürecinde bir değişiklik bile ödeme formu ile sınırlı olabilir.
Bu: müşterinin bir kez modellenmesi ve yeniden kullanılması mümkün değil, çünkü herhangi bir sınırlı bağlamda başka bir model gereklidir. Özellikle, veri modellerinin yeniden kullanılması sorunludur. Tamamen değilse, yeniden kullanım teknik kodla sınırlı olmalıdır.
Artıklık kuralı?
Kodun yeniden kullanılmasının bu kadar çok dezavantajı varsa, alternatif nedir? Artıklık. Müşteri, herhangi bir sınırlı bağlamda birkaç kez uygulanabilir. Ortak bir müşteri kütüphanesi yerine, bir hizmete erişim birkaç kez uygulanabilir. Bu doğal olarak işten çıkarmalar yaratır.
Ancak: fazlalık özgürlüğü bir uzlaşmadır. Artıklık özgürlüğü, uygulamanın sadece bir kez gerçekleştirilmesi avantajına sahiptir ve bu nedenle, örneğin, bir hataya ihtiyaç duyulursa, tek bir yerde bir değişiklik gereklidir. Dezavantaj bağımlılıklarıdır: Birkaç modül, ortak işlevlerin uygulandığı ortak bir kütüphane kullanır. Bu bağımlılıklara yol açar ve – gördüğümüz gibi – sorunlu olabilir.
Çözüm
Sonunda, yazılımı verimli bir şekilde uygulamakla ilgilidir. Kodun yeniden kullanılması mantıklı olabilir, örneğin tüm projeler açık kaynak kütüphaneleri kullanır. Yeniden kullanım, kodun kalitesi üzerinde yüksek istekler belirler. Yüksek kalitenin de yeniden kullanılmasının ötesinde avantajları vardır, ancak aynı zamanda çabayı da artırır. Daha da kötüsü: Yeniden kullanım bağımlılıklara getirir – ve bu yazılımda dağıtım ve değişime neden olabilir. Bu süreçleri kontrol altında tutmalısınız. Dolayısıyla, yeniden kullanım veya fazlalık sadece diğer birçok karardan ödün veriyor. Uzlaşma ve yeniden kullanım özgürlüğü, uzlaşmayı dikkate almadan bir projede belirlenmemelidir.
Blog yazısının ilk versiyonunda tartışmalar için meslektaşlarına Innoq Andreas Krüger ve Michael Vitz'e teşekkürler!
()