Büyük bir java projem var ve yapım döngümüz için maven kullanıyoruz. Bu bir proje yaygın olarak kullanılmaktadır - diğer projelerde, bazıları içinde bulunan ve bazıları başka yerlerde bulunan çeşitli uygulamalarda ... Dürüst olmak gerekirse, biraz karışıklık (belirli zamanlarda farklı zamanlarda eklenen çeşitli bitler) amaçlar) ve biraz temizlemek istiyorum. Ayrıca, tam olarak test edilmemiştir (uygun birim ve entegrasyon testi olmadan çok sayıda bit eklenmiştir) ve çalışması uzun süren veya gerçekten geçmeyen bazı testler vardır ... (uh-oh) - yani testler maven oluşturma döngüsünde kapatılır (yine uh-oh).
Bu büyük projeyi daha küçük spesifik projelere ayırmayı düşünüyorum, böylece 'nihai' alt proje (veya birkaç alt proje) ihtiyaç duyacağı çeşitli alt projeleri alacak.
Düşüncem şöyle:
- eğer büyük projeyi çeşitli alt projelere ayırırsam, bu her bir projenin sorumluluğunun ne olduğunu netleştirir.
- alt projelere ayırarak, her bir alt projenin testini ayrı ayrı temizleyebilir ve maven oluşturma döngüsünde bu alt proje için testi açabilirim.
Bunun inşa süresi üzerinde ne gibi etkileri olabileceğinden biraz endişeliyim.
- Büyük projeye (yani daha küçük alt projelere) bir yapı koymak derleyiciyi yavaşlatır mı?
Ayrıca, bunun IDE'lerde düzenleme süresinin ne gibi etkileri olabileceğine dair küçük bir endişem var (esas olarak Intellij kullanıyoruz). Intellij, her bir projeyi sırayla bağımlılık ağacı üzerinden inşa ediyor gibi görünüyor - yani C, B'ye bağlıysa A'ya bağlıysa ve A'yı değiştirirsem, A derlenmediği sürece B oluşturmaya çalışmaz. Muhtemelen bu avantajlıdır, ancak - örneğin, A ve B'de yaygın olarak kullanılan bir arabirimi değiştirirsem, bu değişiklikteki tüm hataları düzeltmenin biraz zaman aldığını fark ettim ...
Başka bir soru fabrika sınıflarının nasıl kullanılacağıdır. Projenin bazı yönleri dış kavanozlara bağlıdır. Bazen (neyse ki sık sık değil) bunlar güncellenir ve taşınmamız gerekir. Bunu, dış kodun doğru sürümlerine işaret eden bir Factory sınıfı kullanarak ele alma eğilimindeyiz (bu nedenle kod tabanındaki tüm uygulamaları değiştirmek zorunda değiliz).
Şu anda hepsi büyük projede, ancak alt projelere geçerek yeni dış kodun uygulanması için yeni bir proje geliştirebileceğimi, alt projenin tamamen işlevsel ve test edildiğinden emin olabileceğimi ve sonra kullanıcı projesindeki bağımlılıkları / fabrika sınıfını değiştirin. Bununla birlikte, bu, büyük proje boyunca arayüzlerin yaygın kullanımı ile daha karmaşık hale getirilmektedir. Örneğin
- alt proje A - arayüzler içerir
- alt proje B - arayüzler ve eski harici kavanoz için A'ya bağlıdır
- alt proje C - B'ye (ve dolayısıyla A ve eski harici kavanoza) bağlıdır ve B'nin arabirim uygulamalarını kullanan bir Fabrika sınıfı içerir
B'nin dış kavanozunu değiştirmem gerekirse, şunları yapabilirim:
- alt proje yarat B_ii - yine A'ya ve şimdi yeni harici kavanoza bağlı
- Tamamen işlevsel olduğunda, C'nin bağımlılığını B_ii'ye ekleyebilir ve fabrika sınıfını arayüzlerin yeni uygulamalarını kullanacak şekilde değiştirebilirim.
hepsi işe yaradığında, C'nin orijinal B'ye bağımlılığını kaldırabilirim ve istenirse B projesini kaldırabilirim.
Bunu yapmanın mantıklı bir yolu var mı?
Genel olarak, sorularım:
- Herkes büyük projeleri parçalama deneyimi var mı? Paylaşmak isteyebileceğiniz ipuçları / püf noktaları var mı?
- Bunun geliştirme ve inşa süreleriniz üzerinde nasıl bir etkisi oldu?
- Böyle bir projenin böyle bir bölünmesinin yapılandırılması için ne gibi tavsiyeler sunabilirsiniz?