Tasarım kalıpları araçlardır. Araçlar gibi, bunları kullanmanın iki yolu vardır: doğru yol ve yanlış yol. Örneğin, size bir tornavida ve bir çivi verirseniz ve sizden iki odun parçasını birleştirmenizi isterseniz , benden bir çekiç istemeniz gerekir . Çiviler için çekiçler, vidalar için tornavidalar kullanılır.
Çok sık olarak, bir tasarım deseni, yalnızca belirli sorunlar ortaya çıktığında doğru olan Tek Doğru Yol olarak tanıtılır. Küçük geliştiriciler, oynamak için yeni bir şeyler buldukları zaman genellikle çocuklar gibidir; bu tasarım desenini her şeye uygulamak istiyorlar . Ve sonunda A Deseninin B Problemine uygulanacağını öğrendikleri ve sonunda C Desen D Problemine uygulanacağını öğrendikleri sürece, yanlış olan hiçbir şey yoktur. sadece var olduğu için desen; Deseni kullanırsınız çünkü bu iş için en iyi (bilinen) araçtır.
Desenlerin çevirme tarafı, desenlerdir. Zaman ve tekrar kötü olduğu kanıtlanmış şeyler, genellikle yürütme zamanı veya hafıza açısından. Bununla birlikte, hem kalıplar hem de anti-kalıplar geliştiriciye, neden var olduklarını anlamayan bir yarar sağlamaz . Geliştiriciler yaptıklarının yeni ve yaratıcı olduğunu düşünmekten hoşlanırlar, ancak çoğu zaman değildir. Muhtemelen daha önce düşünülmüş. Onlardan önceki insanlar deneyimler yüzünden kalıpları yarattılar.
Tabii ki, küçük geliştiriciler genellikle eski şeyleri yapmanın yeni yollarını bulurlar ve bazen bu yollar daha iyidir. Ancak, çok sık sık Dunning-Kruger etkisinin bir örneği olarak sona erer; geliştirici, işlevsel bir program oluşturmak için yeterince bilgilidir, ancak kendi sınırlamalarını anlamamaktadır. Bunu aşmanın tek yolu hem olumlu hem de olumsuz deneyimlerden geçiyor. Modelleri görmezden geliyorlar çünkü kendilerinin üstün olduklarına inanıyorlar, ama gerçekte 10.000 geliştiricinin zaten belirli bir tasarım kullandığını ve sonra gerçekten kötü olduğu için attığını bilmiyorlar.
Çevik, gelişen müşteri gereksinimlerine hızlı bir şekilde uyum sağlaması bakımından "işleri hızlı bir şekilde yerine getirme" yönünden tercih eder. Tasarım desenlerini desteklemez ya da onları küçümsemez. Bir model en hızlı, en güvenilir yöntem ise, geliştirici onu kullanmalıdır. Belirli bir şablon basitçe "yapılmasını sağlamaktan" daha fazla zaman alırsa, bir model olmayan bir şey kullanmak büyük olasılıkla tamamdır (elbette, bu performansın ciddi şekilde düşmediği varsayılmaktadır). Bilinen bir kalıp bulunamazsa, müşteriye "hayır" demekten çok kendi tasarımlarını yapmak tercih edilir. Müşteriler, özellikle ödeme yapan müşteriler genellikle haklıdır.
Modellerin Yol olduğunu iddia eden veya modellerin Varoluşun Arması olduğunu iddia eden herkes yanlıştır. Desenler, belirli durumlara uygulanması amaçlanan ve koşullara bağlı olarak değişen derecelerde başarıya sahip araçlardır. Bu, MVC'yi seçip seçmemeye, Veri Aktarım Nesneleri'ni kullanıp kullanmamaya vb. Bağlı olmamasına bağlı olmayan bir Gerçeğidir. ve mantıklı hatalardan oldukça uzaktır.
Genellikle , kalıplar tutarlı bir tasarım şekline izin verir ve% 100 orijinal fikir yazmak yerine tüm kalıpları görmezden gelmekten daha iyi bir performans gösterir, ancak tüm kalıplardan kaçınamazsınız. Örneğin, eğer y = x + 5 ise, sadece x + 5 yazma biçiminden kaçınmak için y = x + (5 * 3 + 15/3) / 4 yazacak mısınız? Hayır değilsin. Y = x + 5 yazacak ve bir sonraki soruna geçeceksiniz.
İnsanlar her gün kalıp kullanıyor ve sorun değil . En önemli şey, mantıksal olarak işlevsel, nadiren çarpışan ve kullanıcı dostu kodlara sahip olmak. Bundan başka hiçbir şey önemli değil.