Bir yazılım mühendisliği kavramı olan anti-pattern, kullanışsız çoğu zaman hatalı sonuçlar doğuran, yanlış geliştirilmiş çözümlere denir. Genellikle doğru olduğu düşünülerek gerçekleştirilen ve tecrübe eksikliğinin temel neden olduğu bu hatalar, projelerin başarısızlıkla sonuçlanmasına yol açar. Anti-pattern’lerin en büyük tehlikesi, davranışın ya da çözümün ilk etapta doğru olduğunun düşünülmesidir, bu durum sorunların uzun vadede ortaya çıkmasına neden olur.
Bir çok kaynakta dark pattern, pitfall olarak da geçen bu kavram, Bell Labs programcısı Andrew Koenig‘in C Traps and Pitfalls adlı kitabında bahsetmesiyle yaygınlaştı. Sadece yazılım alanında değil, iş süreçleri ve analizi, proje yönetimi gibi bir çok alanda kullanılan genel bir kavram haline gelmiştir. Aşağıda bazı anti-pattern’ler örnek olarak verilmiştir.
Analysis Paralysis
Bir proje üzerinde yapılan analizlere gereğinden fazla zaman ve enerji ayrılmasıyla ortaya çıkar. Temel nedeni bilgi yetersizliği ve tecrübesizliktir. Bir karar vermeden ya da eyleme geçmeden önce aşırıya kaçan analizler, iş sürecinin duraksamasına neden olur.
Overengineering
Mevcut sorunun, olduğundan çok daha büyük olarak algılanmasıdır. Çözüm, daha kolay bir yoldan yapılabilirken daha karmaşık bir yapı ile çözmeye çalışmak olarak belirtilebilir. Bir çok sorunu çözen bir yapı, gerektiği yerde işe yaramıyorsa bir hiçtir.
Smoke and Mirrors
Bir ürün oluştururken yanıltıcı araçlar kullanmaktır. Ürünün geleceği açısından büyük sorunlar çıkaracaktır.
God Object
Nesne yönelimli programlamada nesneler, programda yer alan iş bölümü için oldukça yararlıdır. Ancak gereğinden fazla iş yapabilen, çok fazla sayıda değişken ve metot içeren nesneler God Object olarak adlandırılır.
Golden Hammer
Her problemin farklı bir çözüm yaklaşımına ihtiyacı vardır. Ancak işlevine güvenilen bir çözümü bir çok problemde kullanmaya çalışmak bir anti-pattern’dir.
Hard Coding
Sabit kodlama; uygulamadaki değişkenlerin doğrudan programcı tarafından belirlenmesidir. Bunun yerine değişkenlerin ve konfigurasyon verilerinin veritabanı, ya da .ini uzantılı dosyalarda tutulması daha kullanışlıdır.
Boat Anchor
Kullanılmayan ancak programda yer verilen kod parçalarına verilen addır.
DLL Hell
.dll uzantısı aynı isimden iki dosyanın bulunmasına izin vermez. Aynı isimli farklı bir dosya olşuturulduğunda yeni dosya eskinin üzerine yazılır böylece eski dosya kaybedilmiş olur.
Daha çok anti-pattern için buradan yararlanabilirsiniz.