Çok dikkatli
Özellik Branching bir seçenek ama biraz ağır buluyorum. Ayrıca, kontrol altında tutulmadığı takdirde uygulamanızın tamamında çatallaşmaya yol açabilecek derin değişiklikleri kolaylaştırır. İdeal olarak, çekirdek kod tabanınızı olabildiğince yaygın ve genel tutmaya çalışırken, özelleştirmeleri mümkün olduğunca yükseltmek istersiniz.
Burada, ciddi değişiklikler ve tekrar etmenler olmadan kod tabanınıza uygulanabilir olup olmadığını bilmiyorum. Temel işlevselliğin aynı olduğu benzer bir projem vardı ancak her müşteri çok özel bir dizi özellik gerektiriyordu. Konfigürasyon ile birleştirdiğim bir modül ve kaplar seti oluşturdum (à la IoC).
daha sonra her müşteri için, temelde yapılandırmaları ve derleme betiğini kendi siteleri için yapılandırılmış bir kurulum oluşturmak için içeren bir proje oluşturdum. Bazen o müşteriye özel yapılmış bazı bileşenleri de oraya yerleştiririm. Ancak bu nadirdir ve ne zaman mümkün olursa, onu daha genel bir biçimde yapmaya çalışıyorum ve aşağı itiyorum, böylece diğer projeler bunları kullanabilir.
Sonuçta, ihtiyacım olan özelleştirme seviyesine sahibim, özelleştirilmiş kurulum komut dosyaları aldım, böylece müşteri sitesine ulaştığımda, sistemi her zaman arayacağım gibi görünmüyorum ve ek olarak ÇOK önemli bir bonus kazanıyorum. Doğrudan yapıya bağlı olan regresyon testleri oluşturabilmek. Bu şekilde, müşteriye özel bir hata aldığımda, sistemi devreye alındığı zaman sistemi savunacak bir test yazabilirim ve böylece bu seviyede bile TDD yapabilirim.
kısaca:
- Düz proje yapısı ile ağır modüler sistem.
- Her konfigürasyon profili için bir proje oluşturun (müşteri, birden fazla profil paylaşabilmesine rağmen)
- Gerekli işlevsellik setlerini farklı bir ürün olarak toplayın ve ona göre davranın.
Doğru şekilde yapılırsa, ürün montajınız birkaç yapılandırma dosyasını içermeli.
Bunu bir süre kullandıktan sonra, en çok kullanılan ya da temel sistemleri çekirdek ünite olarak birleştiren ve bu montaj paketini müşteri montajları için kullanan meta paketler oluşturdum. Birkaç yıl sonra, müşteri çözümleri oluşturmak için çok hızlı bir şekilde monte edebileceğim büyük bir alet kutusuna sahip oldum. Şu anda Spring Roo'ya bakıyorum ve bir gün daha umut ediyorum, fikrimin biraz daha ilerlememesini isteyip istemediğimi görüyorum, ilk görüşmemizde müşteriyle birlikte sistemin ilk taslağını oluşturabilirim ... Geliştirme ;-)
Umarım bu yardımcı oldu
#ifdef
çalışıyor mu