Son zamanlarda temiz kod geliştirme hakkında bir web sitesi okuyor (İngilizce olmadığı için buraya bir bağlantı koymayın).
Bu site tarafından ilan edilen ilkelerden biri Açık Kapalı Prensiptir : her yazılım bileşeni genişletme için açık ve modifikasyon için kapalı olmalıdır. Örneğin, biz uygulanacak ve bir sınıf test ettik, biz sadece hataları düzeltmek için veya yeni işlevler eklemek için (örneğin yeni yöntemleri değiştirmelisiniz yok mevcut olanları etkilemek). Mevcut işlevsellik ve uygulama değiştirilmemelidir.
Normalde bu ilkeyi bir arabirim I
ve karşılık gelen bir uygulama sınıfı tanımlayarak uygularım A
. Sınıf A
kararlı hale geldiğinde (uygulandığında ve test edildiğinde ) normalde çok fazla değiştirmiyorum (muhtemelen, hiç de değil), yani
- Kodda büyük değişiklikler gerektiren yeni gereksinimler (örn. Performans veya tamamen yeni bir uygulama) gelirse, yeni bir uygulama yazarım
B
ve olgun olmadığıA
sürece kullanmaya devam ederimB
. Ne zamanB
olgun olduğunu gerekli olduğunu tüm nasıl değiştirmektirI
örneği. - Yeni gereksinimler de arabirimde bir değişiklik önerirse, yeni bir arabirim
I'
ve yeni bir uygulama tanımlarımA'
. YaniI
,A
donmuş ve kalan uygulama uzun olduğu kadar üretim sistemi içinI'
veA'
bunların yerine istikrarlı yeterli değildir.
Dolayısıyla, bu gözlem ışığında, web sayfasının karmaşık yeniden düzenleme işlemlerinin kullanılmasını önerdiğine biraz şaşırdım, çünkü kod doğrudan son haliyle yazmak mümkün değil. ”
Açık / Kapalı İlkesini uygulamak ile karmaşık yeniden düzenlemelerin en iyi uygulama olarak kullanılmasını önermek arasında bir çelişki / çatışma yok mu? Ya da buradaki fikir, bir sınıfın gelişimi sırasında karmaşık yeniden düzenlemeleri kullanabileceğidir A
, ancak bu sınıf başarıyla test edildiğinde dondurulmalı mıdır?