Çoğu zaman, "karmaşık" yamalar / değiştiriciler, aynı anda birçok farklı şey yapanlardır. Yeni kod, silinen kod, yeniden düzenlenmiş kod, taşınan kod, genişletilmiş testler var; büyük resmi görmek zorlaşıyor.
Yaygın bir ipucu ipucu, yamanın büyük olduğu, ancak tanımının küçük olduğu: "Uygulama $ FOO".
Böyle bir yamayı ele almanın makul bir yolu, bir dizi daha küçük, kendi kendine yeten parçaya bölünmesini istemek. Tek sorumluluk ilkesinin, bir işlevin sadece bir şeyi yapması gerektiğini söylediği gibi, bir düzeltme ekinin de sadece bir şeye odaklanması gerekir.
Örneğin, ilk yamalar tamamen işlevsel değişiklik yapmayan tamamen mekanik yeniden yapılandırmalar içerebilir ve daha sonra son yama (lar) $ FOO'nun daha az dikkat dağıtması ve kırmızı topaklarla gerçek uygulamasına ve test edilmesine odaklanabilir.
Çok sayıda yeni kod gerektiren işlevsellik için, yeni kod genellikle, ürünün davranışını değiştirmeyen test edilebilir parçalara tanıtılabilir; serideki son yama aslında yeni kodu çağırır (bayrak çevirme).
Bunu titizlikle yapmak için, genellikle sorunum olarak söylüyorum ve yazarın yardımını istiyorum: “Burada olan her şeyi takip etmekte zorlanıyorum. birlikte?" Küçük adımlar için özel önerilerde bulunmak bazen gerekli olabilir.
"Implement $ FOO" gibi büyük yama aşağıdaki gibi bir dizi yamaya dönüşür:
- Bir çift yineleyiciyi alan yeni bir Frobnicate sürümü tanıtın çünkü $ FOO'yu uygulamak için vektör dışında dizilerle çağırmam gerekecek.
- Yeni sürümü kullanmak için mevcut tüm Frobnicate arayanlarını değiştirin.
- Eski Frobnicate'i silin.
- Frobnicate çok yapıyordu. Refrumple'ı kendi yöntemine uygulayın ve bunun için testler ekleyin.
- Zerzify'ı testlerle tanıtın. Henüz kullanılmamış, ancak $ FOO için buna ihtiyacım var.
- Zerzify ve yeni Frobnicate açısından $ FOO uygulayın.
1-5 arasındaki adımların üründe hiçbir işlevsel değişiklik yapmadığını unutmayın. Doğru testlerin yapılmasını sağlamak da dahil olmak üzere gözden geçirme konusunda önemsizler. 6. adım hala "karmaşık" olsa bile, en azından $ FOO'ya odaklandı. Ve kayıt kütüğü doğal olarak size $ FOO 'nun nasıl uygulandığı (ve Frobnicate'in neden değiştiği) hakkında daha iyi bir fikir verir.