Bağırsaklarınız size bazı yeniden tazelemeler yapmanız gerektiğini söylerken, içgüdüleriniz size çok uzun zamandır önemli bir şeyi bıraktığınızı biraz geciktirdiğini söylüyor.
Ben "kod kokuyor", kırmızı-yeşil-refactor ve diğer düşünceleri anlıyorum, fakat çoğu zaman refactor için en iyi zaman, kodu ilk yazdığınızda değil, kodu kullanıp uyguladığınızda ikinci veya üçüncü kez olduğunu düşünüyorum. Bu aslında bir sorun ve fiili kullanımda.
Yeniden yapılandırmanın etkili iki düzeyi vardır. İlki, ilk kod yazdığınızda ortaya çıkan belirgin sorunlardır. Bunlar, yapılması gerekenler için size maliyeti düşük olan küçük optimizasyonlardır. Yöntemlerinizi ve sınıflarınızı küçük tutmak, DRY ve SRP'ye bağlı kalmak gibi şeyler. Ardından, tasarımınızdaki büyük kusurlarla başa çıkma konusunda ek bir aşamaya sahipsiniz; bu, kodunuz altında birkaç mil bulunana kadar hemen görülmeyebilir. Bahsettiğiniz bu ikinci seviyedir, ancak daha sonra yeniden yapılanmanın çok masraflı olmadığından emin olmak için, kodunuzu daha sonra öngördüğünüz çabanın daha kolay ve daha az masraflı hale getirileceği şekilde yazmanız gerekir. Bu, erken refactoring yapmak anlamına gelir.
Jeff'in cevabında bahsettiği gibi, "zaman paradır" , özellikle iş yükünün yüksek ve risklerin daha da yüksek olduğu şirketlerde . Kodun mümkün olan en iyi durumda olduğundan emin olmak için harcanan zaman, daha sonra yeniden yapılanmanın ne olması gerektiğine karar verdikten sonra büyük bir işlem olduğu ortaya çıktıktan sonra zamandan kazanılan zamandır.
Yazılım yazarken, kodunuzu geliştirmek için harcadığınız her an, daha sonra gerçekten ihtiyaç duyacağınız zamandan tasarruf sağlar. Refactor ne kadar erken olursa, değişiklikleriniz o kadar net olacaktır. Gelecekteki teknik borca karşı yarının şişireceği dolar karşısında bugünkü dolarda aşağı ödeme yapmak gibi.
Her durumda, yeniden yapılanma, yazılım zaten eksiksiz ve kararlı olduğunda, gizemli bir geleceğe kadar koyduğunuz bir görev olmamalıdır; Yeniden düzenleme, günlük faaliyetlerinizin bir parçası olmalıdır ve bu, bahsettiğiniz Kırmızı-Yeşil-Refactor felsefesinin özüdür.