Bir sürü kurum içi proje için C # /. NET'i kullandığınız yıllar boyunca, bir kütüphane organik olarak büyük bir yığın halinde büyüdü. Buna "Util" deniyor ve eminim çoğunuz bu canavarlardan birini kariyerinizde görmüşsünüzdür.
Bu kütüphanenin pek çok bölümü bağımsızdır ve ayrı bir projeye ayrılabilir (açık kaynak kodlu olmak istiyoruz). Ancak, bunlar ayrı kütüphaneler olarak serbest bırakılmadan önce çözülmesi gereken önemli bir sorun var. Temel olarak, bu kütüphaneler arasında "isteğe bağlı bağımlılıklar" diyebileceğim birçok durum var .
Bunu daha iyi açıklamak için, bağımsız kütüphaneler olma yolunda iyi aday olan bazı modülleri düşünün. CommandLineParser
komut satırlarını ayrıştırmak içindir. XmlClassify
sınıfları XML'e serileştirmek içindir. PostBuildCheck
derlenmiş derleme üzerinde denetimler yapar ve başarısız olursa derleme hatası bildirir. ConsoleColoredString
renkli dize değişmezleri için bir kütüphanedir. Lingo
kullanıcı arayüzlerini çevirmek içindir.
Bu kitaplıkların her biri tamamen tek başına kullanılabilir, ancak eğer birlikte kullanılırlarsa, sahip olması gereken ek özellikler vardır. Örneğin, her ikisi de gerektirir CommandLineParser
ve XmlClassify
oluşturma sonrası kontrol işlevini gerektirir PostBuildCheck
. Benzer şekilde, CommandLineParser
isteğe bağlı belgelerin, renkli dize değişmezleri kullanılarak sağlanmasını sağlar ConsoleColoredString
, bunu gerektirir ve çevrilebilir belgelerin üzerinden gönderilmesini destekler Lingo
.
Dolayısıyla, temel ayrım, bunların isteğe bağlı özellikler olduğudur . Biri, belgeleri çevirmeden veya herhangi bir yapım sonrası kontrol yapmadan düz, renksiz dizeleri olan bir komut satırı çözümleyici kullanabilir. Veya biri belgelerin çevrilebilir ancak hala renklendirilmemiş olmasına neden olabilir. Veya hem renkli hem de çevrilebilir. Vb.
Bu "Util" kütüphanesini inceleyerek, neredeyse tüm potansiyel olarak ayrılabilir kütüphanelerin onları diğer kütüphanelere bağlayan isteğe bağlı özelliklere sahip olduğunu görüyorum. Eğer gerçekten bu kütüphanelere bağımlılık olarak ihtiyaç duyacak olsaydım, o zaman bu tomar hiç karışmazdı: Eğer sadece bir tane kullanmak istiyorsan temelde tüm kütüphanelere ihtiyaç duyardın.
Bu isteğe bağlı bağımlılıkları .NET'te yönetmek için belirlenmiş herhangi bir yaklaşım var mı?