Bir sistem içinde bilginin her bir parçası tek, kesin ve güvenilir olmalıdır.
DRY açılımıyla “Don’t repeat yourself”, “Kendini tekrarlama!” prensibidir. Andy Hunt ve Dave Thomas tarafından 2000 yılında The Pragmatic Programmer adlı kitabında gündeme gelmiştir, ancak kavramın kendisi uzun zamandır zaten bilinmektedir.
DRY prensibine göre programcının kodlama esnasında kod tekrarlarından (code duplication) sakınması gerekmektedir. Kodun kendini tekrarlaması yazılım sisteminin bakımını ve geliştirilmesini zorlaştırır.
Peki kod tekrarı(code duplication) nasıl olur?
Birden çok yazılımcının aynı programın farklı bölümlerinde aynı anda çalıştığı durumlarda gerçekleşebilir. Farklı görevler üzerinde çalıştıklarından, kendi ihtiyaçları için benzer bir kod yazmış olduklarının farkında olmayabilirler.
Ayrıca, kodun belirli kısımları farklı göründüğü halde aslında aynı işi gerçekleştirdiğinde de kod tekrarına girmektedir. Bu tür bir kod tekrarını bulmak ve düzeltmek bazen zor olabilir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
public Position walkNorth() { Player player = getCurrentPlayer(); player.move("N"); return player.getNewPosition(); } public Position walkSouth() { Player player = getCurrentPlayer(); player.move("S"); return player.getNewPosition(); } public Position walkEast() { Player player = getCurrentPlayer(); player.move("E"); return player.getNewPosition(); } public Position walkWest() { Player player = getCurrentPlayer(); player.move("W"); return player.getNewPosition(); } |
Çoğu yazılımcı, bu kodu muhtemelen aşağıdaki gibi bir yönteme göre refactor(işlevini değiştirmeden düzenleme) etme gerektiğini anlamaktadır.
1 2 3 4 5 |
public Position walk(String direction) { Player player = getCurrentPlayer(); player.move(direction); return player.getNewPosition(); } |
Bir başka kod tekrarı kopyala yapıştır ile günü kurtarma ile olur. Acil bir durumda gözünüz hiçbir şeyi görmez. “Aman sonra düzeltiriz” diyerek kod çoğaltılır. Bazı durumlarda, dağınıklığı gidermek için zaman ayıramayız ve o kod öylece bizden sonraki nesillere kalır.
Kod yazarken tekrara düştüğünüzü düşündüğünüz anda hemen bu prensip aklınıza gelmelidir. Zaten kullandığınız IDE’ler artık sizi hemen uyarmaktadır veya kodunuzu bir takım kod metriklerini ölçen araçlara soktuğunuzda size raporları verecektir. Bunları dikkate alarak kodlamayı unutmayın.