Bunun aslında iki soru olduğunu düşünüyorum - her ikisine de cevap vermeye çalışacağım.
1) Bir kod tabanındaki yinelenen kodu nasıl azaltabiliriz.
Kendimize bunu yapmanın faydasını hatırlatmaya yardımcı olur: yinelenen iş mantığı nedeniyle daha az hataya neden olur ve daha az kodun korunması gerekir. Bunun gerçekleşmesini azaltmanın en iyi yolu, diğer cevaplarda belirtildiği gibi iletişimdir. Kod gözden geçirme sorumluluklarını eşit bir şekilde yaymak için kod gözden geçirme sorumluluklarını eşit olarak paylaşmanız gereken ekstra uyarı ile kod önerilerini kullanma önerisini şiddetle kabul ediyorum. Ayrıca, günlük stand-up'lar kullanmalısınız, böylece geliştiriciler, birisi yararlı kod içeren bir sorunu çözmeye çalıştığında sık sık tanıyacaktır. Bilgi paylaşımını artırdığı ve programcıların disiplinli kalmasına yardımcı olduğu için kod eşleştirmeyi de göz önünde bulundurmalısınız.
Ayrıca, geliştiricilerinizi mümkün olduğunca birbirine yakın, tercihen aynı odada tutmanızı da öneririm. Çok sayıda paylaşılan yazı tahtası ve alan. Sonra onları birlikte yemek için gönderin. Geliştiricileriniz ne kadar "bağ" kurarsa, birbirleriyle o kadar iyi iletişim kurarlar.
Bir wiki veya benzeri bir belge kodu kullanma önerisini kabul etmiyorum. Disiplinli geliştiriciler ne kadar uğraşmaya çalışırlarsa olsunlar dokümantasyon orijinal koddan sapacaktır. Daha etkili bir yaklaşım, spesifikasyonun örnek stil testleri ile kullanılması olacaktır. Bunlar, kodu, nasıl kullanılması gerektiğini netleştirecek şekilde belgelendirir ve birisi örnekleri değiştirmeden kodu değiştirirse testleriniz başarısız olur.
Zaten çok sayıda yinelenen kod içeren büyük bir kod tabanınız var, bu yüzden muhtemelen bunu yeniden düzenlemeye çalışmalısınız. Kesilmeyen ve yapıştırılmayan yinelenen kodları bulmak zor olabilir. Bunu yapmak yerine, değişiklik geçmişinizi analiz etmenizi öneririm. Aynı anda sıklıkla değişen dosyaları arayın. Bu, gerçek yinelenen kodu göstermiyorsa ve yine de temizlemeye değerse, kapsülleme ile ilgili sorunları gösterecektir. Hata düzeltme geçmişinizi kod değişikliklerinize karşı da analiz edebiliyorsanız, düzeltmelerin sıklıkla gerekli olduğu belirli sıcak noktaları bulabilirsiniz. Bu sıcak noktaları analiz edin ve muhtemelen birçoğunun, bir geliştiricinin iki kez değiştiğini fark etmeden sadece bir yerde değiştirdiği yinelenen iş mantığından kaynaklandığını göreceksiniz.
2) Daha sonra başka projelerde kullanılabilecek paylaşılan widget'lar, bileşenler, kütüphaneler vb. Yapmaya nasıl yaklaşmalıyız ?
Bu durumda, iş mantığını sarmaya çalışmamalı, yararlı çerçeve kodunu paylaşmalısınız. Bu, paylaşılan bir dizi bileşen oluşturma ve bakımının maliyeti oldukça büyük olabileceğinden ve hangi durumlarda yapmaya değer olduğunu tahmin etmek zor olabileceğinden, bu zor bir denge olabilir. Burada önereceğim yaklaşım üç grev kuralıdır. Benzer bir kod parçasını iki kez yazma konusunda endişelenmeyin, ancak üçüncü kez yapmanız gerektiğinde bunu paylaşılan bir bileşene yeniden düzenleyin. Bu noktada, yararlı olacağından emin olabilirsiniz ve bileşen için daha geniş gereksinimler hakkında iyi bir fikriniz vardır. Açıkçası, geliştiriciler arasındaki iletişim burada çok önemlidir.
Paylaşılan bileşenlerinizin çoğunu mümkün olduğunca açık kaynak yapmayı düşünün. İş mantığı değil, bu yüzden rakiplerinize çok fazla avantaj sağlamayacak, ancak ücretsiz olarak ekstra yorumcular ve koruyucular elde edeceğiniz anlamına geliyor.