Neredeyse her şey maliyetler ve faydalar açısından analiz edilebilir ve bence bu burada geçerlidir.
İlk seçeneğin bariz faydaları, kısa vadede işi en aza indirmesi ve çalışma kodunu yeniden yazarak bir şeyi kırma şansını en aza indirmesidir. Bariz maliyet, kod tabanına tutarsızlık katmasıdır. Bazı X işlemlerini yaptığınızda, kodun bazı bölümlerinde bir şekilde ve kodun farklı bölümlerinde farklı bir şekilde yapılır.
İkinci yaklaşım için, bariz faydayı zaten fark ettiniz: tutarlılık. Bariz maliyet, yıllar önce terk etmiş olabileceğiniz şekillerde çalışmak için zihninizi bükmeniz ve kodun sürekli okunamayacağıdır.
Üçüncü yaklaşım için, bariz maliyet çok daha fazla iş yapmak zorunda. Daha az belirgin bir maliyet, çalışan şeyleri kırabilmenizdir. Bu, özellikle (genellikle olduğu gibi) eski kodun doğru çalışmaya devam etmesini sağlamak için yetersiz testlere sahip olması durumunda mümkündür. Bariz fayda, (başarılı bir şekilde yaptığınızı varsayarak) güzel, parlak yeni bir kodunuz olmasıdır. Yeni dil yapıları kullanmanın yanı sıra, dili tam olarak yazıldığı gibi hala kullansanız bile, neredeyse her zaman kendi başına iyileştirmeler sağlayacak olan kod tabanını yeniden düzenleme şansınız vardır. iş daha kolay ve büyük bir kazanç olabilir.
Yine de bir başka önemli nokta: şu anda, bu modülün uzun bir süredir minimum bakım yaptığı görülüyor (bir bütün olarak proje sürdürülmesine rağmen). Bu, oldukça iyi yazılmış ve nispeten hatasız olduğunu gösterir - aksi takdirde, geçici olarak daha fazla bakım geçirirdi.
Bu başka bir soruya yol açar: şu anda yaptığınız değişikliğin kaynağı nedir? Genel olarak hala gereksinimlerini iyi karşılayan bir modüldeki küçük bir hatayı düzeltiyorsanız, bu, tüm modülün yeniden yapılandırılması için harcanan zaman ve çabanın büyük olasılıkla boşa harcanacağını gösterecektir - birisinin uğraşması gerektiğinde yine, "modern" beklentileri karşılamayan kodu koruyarak, şu anda bulunduğunuz pozisyonda olabilirler.
Bununla birlikte, gereksinimlerin değişmesi de mümkündür ve bu yeni gereksinimleri karşılamak için kod üzerinde çalışıyorsunuz. Bu durumda, ilk denemelerinizin mevcut gereksinimleri gerçekten karşılamaması olasıdır. Ayrıca, gereksinimlerin tekrar dengelenmeden önce birkaç tur revizyona girme şansı da oldukça yüksektir. Bu, (nispeten) yakın vadede bu modülde önemli bir iş yapma olasılığınızın çok daha yüksek olduğu ve yalnızca doğru olduğunu bildiğiniz tek bir alanda değil, modülün geri kalanında değişiklik yapma olasılığınızın çok daha yüksek olduğu anlamına gelir şimdi. Bu durumda, tüm modülü yeniden düzenleme işleminin, ekstra çalışmayı haklı kılacak somut, kısa vadeli faydalara sahip olma olasılığı daha yüksektir.
Gereksinimler değiştiyse, ne tür bir değişikliğin söz konusu olduğuna ve bu değişikliği neyin tetiklediğine de bakmanız gerekebilir. Örneğin, Git'i SHA-1 kullanımını SHA-256 ile değiştirmek için değiştirdiğinizi varsayalım. Bu, gereksinimlerdeki bir değişikliktir, ancak kapsam açıkça tanımlanmıştır ve oldukça dardır. SHA-256'yı doğru bir şekilde saklayıp kullandıktan sonra, kod tabanının geri kalanını etkileyen diğer değişikliklerle karşılaşmanız olası değildir.
Diğer yönde, küçük ve ayrık bir şekilde başladığında bile, bir kullanıcı arayüzündeki bir değişiklik balonlaşma eğilimindedir, bu nedenle "bu ekrana yeni bir onay kutusu ekle" olarak başlayan şey daha çok şu şekilde sonuçlanır: kullanıcı tanımlı şablonları, özel alanları, özelleştirilmiş renk düzenlerini vb.
Önceki örnek için, tutarlılık tarafındaki değişiklikleri ve hataları en aza indirmek muhtemelen en mantıklıdır. İkincisi için, tam yeniden düzenlemenin ödeme yapması çok daha olasıdır.