Aslında kariyerimde üç kez oldukça önemli bir yeniden düzenleme yaptım. Kodun çürümeye eğilimi vardır, bu nedenle kod tabanınız yeterince uzunsa, büyük bir refactor hemen hemen kaçınılmazdır. Tüm örneklerim özel kod tabanlarındaydı, bu da genel örneklerin neden bulunmasının zor olduğunu açıklayabilir.
İlk kez, ister inanın ister inanmayın, sadece nokta vuruşlu yazıcılarla çalışmasını sağlayan temel bir mimariye sahip bir uygulamadır. Şirketim artık şerit tedarik edecek bir satıcı bulamadığında, bir lazer yazıcıyla çalışmasını sağlamak için beni görevlendirdiler.
İkinci kez, kısmen daha iyi platformlar arası kabiliyete ihtiyaç duyduğumuz ve kısmen yeni C geliştiricileri işe almanın zorlaştığı için C'den Java'ya yüzlerce otomatik test komut dosyasının taşınmasıydı.
Üçüncü kez hala ortasındayım, bu, kuplajı azaltarak ve çapraz platform amaçları için birim testine izin vermek için büyük bir monolitik uygulamayı modüle ediyor.
Bir dağa tırmanma çabasını karşılaştırıyorum. Önünüzde bu büyük hedef var, ancak makro düzeyde bununla başa çıkmıyorsunuz. Bir seferde bir tutamak alırsınız, her zaman yakın bir geri dönüş konumuna sahip olursunuz, bir sonraki güvenlik yerine kadar önceki güvenlik bağlantısını asla kesmezsiniz. Sadece küçük artımlı iyileştirmeler yapmaya başlıyorsunuz ve bir süre sonra geri dönüyorsunuz ve aniden bu güzel manzara var.
Diyelim ki 60.000 yüksek kodlu dosyanız var. Ünite testine girmeye başlamak istiyorsunuz, ancak bağımlılıklar bunu imkansız hale getiriyor. Nasıl tamir edersin? Bir dosyayı ayırırsınız . Otomatik testler eklersiniz. Devam etmeden önce sağlam zemine dönersiniz. 59.999 kez tekrarlayın.
O sesler basit olursa, yıllardan bu çünkü olduğu basit. Kolay değil, ama basit. İlk başta herhangi bir gelişme olduğunu görmek zor. İmkansız bir refactor gibi görünen iki yıltayız ve bitene kadar büyük olasılıkla önümüzde yıllar var, ancak geriye dönüp baktığımızda aniden kodun ne kadar daha iyi hale geldiğini anlıyoruz ve yeni işlevler sunmaya devam edebildik bu arada müşterilerimize.
Diğer iki kez aynı şekilde çalıştı. Uygulamayı her zaman çalışır durumda tutarak, atabileceğiniz en küçük güvenli adımı bulursunuz ve uygularsınız. Sadece doğru yönde ilerlediğinizden emin olmak için büyük resimden endişe ediyorsunuz. Tüm eylemleriniz küçük, istikrarlı ve artımlıdır.