5 entry daha
  • tasarım şablonları (design patterns) ilk olarak mimarlar tarafından ortaya atılmış bir kavramdır. sadece bilgisayar bilimleri değil, tanımlanabilen sorunlara sahip ve bunların uygulamalı çözümleri üzerinde çalışan her bilim dalı tasarım şablonlarından faydalanabilir. algoritmik sorunlara değil tasarımsal sorunlara çözüm getirmeyi hedeflerler (bu entry boyunca tasarım şablonlarını övecek, en sonunda da yerim tasarım şablonlarını diyeceğim).

    tasarım şablonları sıkça karşılaşılan bazı sorunların deneyimle sabitlenmiş optimum çözüm yollarını sunar ve önerirler. böylece bir uygulamanın mimarisini hazırlayan kişiler bu şablonlardan doğru bir kullanımla yararlandıklarında bir kaç güzel şeyi sağlamış olurlar.

    yazılan kod reusable olur (nesneye yönelik programlamanın ortaya çıkış nedenlerinden birisi olan reusability kavramı kodun yeniden kullanılabilirliğini işaret eder), çünkü tasarım şablonları size optimal granularity'yi ve abstraction'u salık verirler, bu sayede elde ettiğiniz modüller bir işi yapan taşınabilir ve flexible bileşenleri olur uygulamanın.

    tasarım şablonlarının diğer bir getirisi de mimarinin herkesce bilinen ortak bir dile sahip olması olur. ortak dil sayesinde yazdığınız uygulamanın tasarım detaylarını açıklamakta fazla zorlanmaz, implementasyon detayları yerine logic'den daha fazla bahsedebilir olursunuz. örneğin bir class'ın uygulamanın çalışma zamanının her anında sadece bir instance'ının aktif olması gerekiyorsa, ve eğer instance yoksa yeni bir tane oluşturulması, varsa var olanın instance'ın kullanılması, ve ayrıca da multi-thread uygulamalarda mutex'lerin kullanılması ve race condition sorunlarının çözülmesi gibi problemlere çözüm getirmeniz gerekiyorsa singleton isimli şablon size bunun en iyi çözümünü sunar. hem bu çözümü size sunar, hem de siz bunu iki saat insanlara anlatmaya çalışmak yerine "burda da singleton kullandım, geçtim" diye karizma yapar, uzatmadan sorunun çözümünü ifade etmiş olursunuz (design patterns ile sevdiklerinize zaman ayırın).

    tasarım şablonları design yapan kişiye zaman kazandırır.. daha önceden defalarca karşılaşılmış bilinen sorunların çözümlerini tasarım şablonlarından miras alır ve sizin uygulamanıza özel durumlarla ilgili düşünmeye devam edebilirsiniz. ayrıca yazdığınız kodun bilimsel olarak doğruluğu üzerinde anlaşılmış kimi kriterlere uygunluğu da size güven verir..

    evet..

    öte yandan tasarım şablonları yazılım geliştirme olayının bilgisayarların yayılması ile beraber endüstriyel bir mevzu haline gelmesi ile iyice değer kazanmıştır. çünkü adam gibi programlama bilgisi olmayan insanların yüzüne bakılır uygulamalar ortaya çıkarması gerekliliği, en deneyimsizlerinin bile bir şeyler yapabilmesini sağlayacak teknolojilere olan ihtiyacı doğurmuştur (büyük şirketlerde java ile uygulama geliştirilmesinin nedeni de aynıdır bana kalırsa, 3-tier zımbırtısını birileri zorlamadan beceremeyecek kadar andaval olanları zorla adam eder çünkü, buzdolabı ile tost makinesi konuşabilsin diye tasarlanmış, embedded olarak kullanılacağı hayal edilmiş olan (şimdi alakası yok ama jini mesela en uygun kullanım alanlarından birisidir) java'nın multiplatform oluşu filan tercih edilmesinde bir sebep değildir). tasarım şablonları ile ortaya koyulan çözümler (abstract factory, singleton, lazy initialization, prototype, iterator, visitor, observer, memento, facade, decorator vs vs n tane var böyle sonuçta [bunlar nispeten çok kullanılanları ve kolay olanları]) zaten deneyimli ve hayal gücü olan her programcının ihtiyaç duyduğunda ortaya koyacağı çözümlerin aynısıdır.. peki bunlar kötü şeyler midir? bir tarafım (akademisyen olan tarafım diyelim) değildir diyor (çünkü "genç" bilgisayar bilimlerinin yavaş yavaş sağlam ayaklarla yere basan bir şey haline gelmesini sağlıyor), bir tarafım da (hacker kültürü ile yoğurulmuş olan tarafım diyelim) kötü tabi diyor (çünkü ortalık rezalet, basmakalıp uygulamalarla doluyor, bu yalanlar içerisinde yetişen insanlar -muhakkak hepsi değil, fakat azımsanmayacak bir kısmı- bilgisayar dünyasının çok küçük bir kısmında yaşayıp birer "bilgisayar memuru" oluyorlar) ("hiç kimse bilgisayar memuru olmasın da herkes nerd mü olsun, milletin ailesi, hayatta keyif aldığı başka şeyler var lan düdük!" derseniz kıçımın üstüne otururum, o ayrı konu)..

    fakat, hepsinin ötesinde, tasarım şablonlarını öğrenmek insanın geniş bir vizyon sahibi olması açısından çok önemlidir bence. tasarım şablonları programlama ile ilgili çözümlere farklı bir gözle bakmanızı sağladığı gibi -bu yazdığım şeyi buraya kadar okumuş ve ciddi bir kısmını anlamış olanların bazılarının dahi bir türlü cevabını adam gibi veremediklerini kendilerine itiraf edebilecekleri- nesneye yönelik programlamanın neden önemli olduğu, procedural programming ve functional programming ile gerçek farkının ne olduğu sorusuna zaman içerisinde sağlam bir yanıt vermelerini de sağlar..

    hazır bu mevzular açılmışken, (bkz: proje yönetimi/@evreniz).
40 entry daha
hesabın var mı? giriş yap