Yeniden düzenleme, devam eden bir süreçtir - ve olmalıdır. Hala tamamlanmamış olan çalışma ve test edilmiş bir uygulama ile sadece gereksinimleri karşılamak yeterli değildir.
"Çalışmasını sağla, sonra daha iyi çalışmasını sağla" .
Bu alıntıyı nerede okuduğumu hatırlayamıyorum, ancak bu yeniden düzenleme işlemini iyi uygulamanın anahtarı ve başka türlü yapmak için profesyonelce sayıyorum.
Sürekli yeniden düzenleme, yemek pişirirken döküntüleri silmek ve yemeğinizi yedikten sonra bulaşıkları temizlemek gibidir. Hedeflenen yeniden düzenleme, kirli bir mutfak bulmak gibidir, ancak yalnızca bir veya iki bardak yıkamak için zamana sahiptir. Sürekli kirli bir mutfakla mı yaşamayı tercih edersin yoksa devam ettikçe işlerin temiz kalmasını mı tercih edersin?
Kodun çalışmasını sağlayın, sonra kullanabileceğiniz en iyi uygulamaya sahip olduğunuzdan emin olmak için kodunuzu yeniden düzenleyin. Tanıdık bir şey yapıyorsanız, ilk kez en iyi kodu uygulamış olabilirsiniz, ancak emin olmak için çalışmanızı iki kez kontrol etmeniz biraz zaman alabilir. Kodunuzu geliştirebilecek gibi görünüyorsa, kodunuzun olabildiğince az yalın ve temiz olduğundan emin olmak için yeniden yönlendirmeye çalışın. Bu, geride bıraktığınız teknik borç miktarını azaltacağınız ve bir sonraki kodun ele alınması gerektiğinde okumayı ve yeniden düzenleme yapmayı kolaylaştıracağınız anlamına gelir. Bu, TDD mantra "Red-Green-Refactor" ın arkasındaki temel değerdir, ancak TDD'de öncelikle çoğaltmayı kaldırmayı reddettiğinizde, büyük sınıflar, uzun yöntemler gibi yeniden yapılandırılabilecek diğer öğeleri de incelemeyi öder.
Kendinizi büyük bir yeniden tasarımla karşı karşıya bulursanız, belki de zamanlamanız çok azalıyorsa, belki de bir süre erteleyebilirsiniz. Bununla birlikte, bu, kodunuzun işlevselliğinden ödün verilmeyeceği ve uygulamanın gereklilikleri yerine getirmeye devam etmesi koşuluyla sağlanmıştır. Bu tür bir durum nadir görülen bir durum olmalıdır ve ilerledikçe sürekli tekrarlanıyorsanız bunun daha da nadir olmasını sağlamaya yardımcı olabilirsiniz. Daha da önemlisi, büyük değişikliklerinizi çok uzun süre bırakma riskini alamamanız, aksi halde daha sonra düzeltilmesi çok daha maliyetli olabilecek veya daha maliyetli bir sonuç verecek şekilde daha büyük bir iş yükü oluşturacaksınız. proje hatası.
Birçok insanın Refactoring ve Re-engineering tanımlarını karıştırdığı kanısındayım . İki terim, çok farklı durumları yönetme stratejilerini açıklar. Yeniden yapılandırmak istiyorsanız, sistemin davranışını değiştirecek sert bir değişiklik yapma taahhüdünde bulunuyorsunuz. Bu bazı testleri geçersiz kılar ve ayrıca yeni testler gerektirir. Refactor yaptığınızda, sistemin tam olarak davranmaya devam etmesini sağlarsınız.değişiklikten önce olduğu gibi, ancak aynı zamanda kodunuzun uzun ömürlü olmasını ve zamanla bakımının daha kolay olmasını sağlarsınız. Kodunuzu cehenneme "atmayacaksınız", başarısızlık riskini azaltacak profesyonel bir temiz kod standardına bağlı kalıyorsunuz ve kodunuzun çalışmak ve profesyonel bir standartta çalışmaktan zevk almasını sağlayacaksınız. .
Kırılan camlar analojisine geri dönersek, camı kırırsanız hemen onarmanız gerekir. Bir pencerenin kırıldığını farketmediyseniz, pencereyi kırılmış olarak bıraktığınızda maliyeti size belirlemeniz gerekir. Şimdi, önceki iki cümle tekrarlamak, ama yerine Bug için pencerenin. Sonunda farklı bir stratejiye ihtiyacınız var. Kodladığınız gibi bir hata oluşturduysanız hemen düzeltin veya değişikliklerin yeniden mühendislik çalışması gerektirip gerektirmediğini görüyorsunuz ve sorunu çözmenin en iyi olacağı zaman konusunda ticari bir karar veriyorsunuz. Bu yüzden bir sorunu çözmek için refactor yapmazsınız, problemleri bulup düzeltmenin daha kolay olmasını sağlamak için refactor yaparsınız. Kodunuzun ne kadar şaşırtıcı olduğunu düşündüğünüz umrumda değil, karmaşık sistemler her zaman zaman içinde ele alınması gereken problemlere sahip olacaktır. Teknik borcun ne olduğu ve bu nedenle yeniden düzenlemenin neden kodunuzu uygularken devam eden bir süreç olması gerektiğine ve bir süre sonra keyfi bir süre için bırakılmayacağına bağlı.
Kısacası, nadiren verilebilecek olan cevap, bir son tarih vermek için kodda yapılacak önemli değişiklikleri ertelemenin kabul edilebilir olabileceği cevabı, ancak yeniden yapılanmayı günlük uygulama işinizden bağımsız bir egzersiz olarak kabul etmek normal bir uygulama olarak kabul edilmemelidir ve kesinlikle Asla kurallara aşina olmayan ekipler tarafından mazeret olarak kullanılmadıklarından, uygulamalarının şartlar altında yapabilecekleri kadar yalın ve temiz olmalarını önleme seçeneği olarak.