Kesinlikle.
Yeniden düzenleme, çalışan ve "geçen" bir projede yapılmalıdır. Tüm testleriniz (ünite, sistem ve kabul seviyelerinde) geçtiğinde, ürününüzün gereksinimleri karşıladığını bilirsiniz. Refactor olduğunuzda, tüm testlerin geçmeye devam ettiğini onaylamaya devam edebilirsiniz. Herhangi bir test başarısız olmaya başlarsa, yanlış bir şey yaptınız ve düzeltmeniz gerekiyor. Başarısız testleriniz varsa, yeniden düzenleme işleminden önce bunları düzeltmelisiniz, böylece yeniden düzenleme işleminizin sistemin işlevselliğini değiştirmediğinden emin olabilirsiniz.
Bu aynı zamanda yeniden düzenleme için mükemmel bir zamandır, yeniden düzenleme işlemini yürütmek için zaman ve kaynaklara sahip olduğunuzu varsayarak, yine de zaman ve bütçeye göre teslimat yaparsınız. Yeniden düzenleme artık sisteminizi anlamayı ve bakımını kolaylaştıracak, böylece daha fazla yeni özellik ekledikçe daha kolay hale geliyor. Kod çürümesine ve yazılım entropisine karşı savaşmanız gerekiyor .
As Joel Etherton yorumlarda işaret, sen üstlenmeden kapsamını yönetmesi gerekir. Sistemin yakında özellikler ekleyeceğiniz bölümlerini yeniden düzenlemeye odaklanın, birlikte çalışmayı kolaylaştıracak veya yeni özellikler ekleyecek yeniden düzenleme işlemleri gerçekleştirin. Statik analiz, metrik araçları ve kod incelemelerinin kullanımı, en kritik alanları belirlemenize yardımcı olabilir. Son başvuru tarihlerini kaçırmak istemezsiniz çünkü yeniden düzenleme yapıyordunuz - müşteriye değer katmaya devam etmeniz gerekiyor.
Müşterinin yeniden düzenleme konusunda değer görmediğinden bahsediyorsunuz. Genellikle, müşteri kodun kalitesini değil, ürünün kalitesini umursar. Yeniden düzenleme, yüksek ürün kalitesini korumanızı ve müşterinin değişen ihtiyaçlarını karşılayan bir ürün sunmaya devam etmenizi kolaylaştıracaktır. Programınıza yeniden düzenleme yapmak için zaman görüşmeye çalışın (müşteri Y gün içinde X özelliğini istiyor, Y + Z günlerini mi yoksa XN özelliklerini mi alamayacağınızı görmeye çalışın, böylece tasarım, yeniden düzenleme ve uygulama için zaman harcayabilirsiniz) Yapabilmek.