20 Ağustos 2011 Cumartesi

Design Patterns (Tasarım Şablonları)

Bilindiği gibi bir çok programlama tekniği mevcut. Hatta, ne kadar programcı varsa, aslında o kadar programlama tekniği vardır. Programlama tekniği adeta insanın hayat görüşünün bile bir yansıması olarak düşünülebilir. Çünkü insan kadar hayat görüşü ve programlama tekniği varsa bunlar bir birlerine gizli bir şekilde bağlı demektir. Fakat tabiki bu görüşleri üst kategorilerde toplamak da mümkündür. Bu tekniklerin en ünlülerinden biri şüphesi "nesneye dayalı programlamadır" (NDP, ingilizce OOP).

NDP, içerdiği programlama prensipleri ile oldukça düzenli bir yöntem olduğunu kanıtlamıştır. Zaten de istatistiklere göre (google trends ve bir kaç programlama şirketinin) dünyada en çok tercih edilen programlama dili Java'dır. Java nesneye dayalı bir dildir. Fakat Java'yı bu kadar popüler yapan şey sadece NDP olması değil ayrıca tam olarak tasarım şablonlarını (design patterns) destekleyecek şekilde bina edilmesidir.

Nedir peki tasarım şablonları? Tanımlanırsa bir tasarım şablonu, bir durumdaki probleme getirilen çözümden ibarettir. Bu tanımı gereğiyle algoritmaya benzetilebilir fakat tasarım şablonları oldukça yüksek seviyeli bir tasarım metodudur.

Tasarım şablonları bu kadar popüler yapan şeylerden biri ise programcıların yıllarca çalışmasıyla elde ettiği deneyimleri düzenleyip adeta matematik teorileri gibi düzenlemesidir. İyi bir programcı, kesinlikle tasarım şablonlarının çözüm getirdiği problemlerle kendisi karşılaşmış ve hatta belki de farkına varmadan bu çözümü aynı tasarım şablonlarında anlatıldığı gibi getirmiştir.

Fakat genellikle programcılar tasarım aşamasında fazla düşünmeden kod yazdığında genellikle içinde çıkılmaz durumlara düşerler. Mesela programda yapılan ufak bir değişiklik bile aynı anda bir sürü kodun değiştirilmesine neden olur ki bu hem zaman alıcı hem de sonra oluşacak hatalara da zemin oluşturucu bir durumdur.

Yani kısaca bir programdan beklenilen şeyler şu şekilde sıralanabilir:
  • Tamir edilebilme (maintainability)
  • Ölçeklenebilme (scalability)
  • Tekrar kullanılabilme (re-usability)
  • Taşınabilme (mobility)
  • Okunaklılık (readability)

Bu özelliklerin hepsini sağlamak çok zordur. Fakat tasarım şablonları bu beklentileri büyük derecede karşılar. Önümüzdeki yazılarımda programcılar tarafından en çok kullanılan patternları anlatacağım.

Hiç yorum yok:

Yorum Gönder