Yazılım Mühendisiği Rehberi-Design Patterns

Nasıl daha iyi bir yazılım mühendisi olabiliriz? Geçen yazıdan hatırladığımız gibi araştırmalarımız devam ediyordu. Bu yazıda meşhur Design Patterns konusuna değineceğiz.

Design Patterns aslında Object Oriented Design, Object Oriented Programming konularını uygulamalı olarak anlatıyor aslında. O yüzden bu konuya açıkçası OOP, OOD nin uygumalı olarak problemler üzerinde öğrenimi olarak bakıyorum. Günümüzde modern Yazılım mühendisliğinin temelindede bu konular yatmaktadır. O yüzden bu konu yazılım mühendisliğinde oldukça önemli bir yer tutmaktadır.

Yazılım mühendisiliğine ilk olarak merak salmamı sağlayan alanlardan biriydi Design Patterns. İlk olarak öyle sitelerde yazılımla alakalı makaleler okurken bahsediliyordu sonra biraz araştırayım dedim ve genelde herkesin referans olarak tavsiye ettiği ve yazılım dünyasında çığır açan Design Patterns, Elements Of Reusable Object Oriented Software kitabını e-book olarak edindim. İlk bölümleri okumaya başlayınca önce kısa süreli beyin sarsıntısı geçirip ardından "Vay bee" anı yaşamıştım. Çünkü benim yazılım geliştirirken karşılaştığım problemleri gösteriyordu ve ardından nasıl bu problemlere uygun çözümler getirilir onları adım adım anlatıyordu.Ve çözümler klasik mantıktan, alıştığımdan çözümlerden oldukça farklıydı. Çok iyi anlamasamda ilk okuduğumda edindiğim izlenim yazılım geliştirmeyi kod yazmayı, Object Oriented felsefese adına hiçbirşey bilmediğim oldu. Gerçekten okulda öğretilen Yazılım Mühendisliği, Object Oriented Programming vb.. derslerde açıkçası hiçbişey gösterilmemiş. Daha önceden interface, abstract class kavramlarını bilsemde gerçekten ne işe yaradıklarını hangi durumlarda kullanıldıklarını o kitabı okuduktan sonra öğrendim. Bu benim için Yazılım Mühendisliği dünyasına ilk ve iyi bir giriş oldu, ama sadece giriş….Buz dağının görünen ucuydu yani.

Yazılım geliştirmeyi,kod yazmayı bilmediğimi anlamamı erken sağladığı için kendimi çok şanslı hissediyorum. Burada Design Pattern nedir ne değildir diye anlatmayacağım. Zaten internette bir dünya kaynak mevcut. Ama Yazılım mühendisliği adına öğrenilmesi gereken en önemli konulardan biri olduğunu düşünüyorum. Kaynak olarakda yukarıda yazdığım orjinal GOF’un kitabını kullanabilirsiniz . Kitap C++ ile örnekleri anlatıyor fakat OOP mantığı diğer bütün dillerde aynı olduğu için çok fazla fark etmiyor. Bu bakımdan eğer C++ bilginiz iyi değilse ya da C++ diliyle proje geliştirmiyorsanız Java ile örnekleri anlatan Head First Design Patterns kitabını öneririm. Açıkçası bu kitap sonrada okumama rağmen orjinalinden daha çok hoşuma gitmişti.

Ayrıca benimde ilk olarak yapmaya çalıştığım bütün Pattern’ları tek tek öğrenmeye çalışmaktı. Pattern ezberlemek gibi bişey oldu yani. Tabi çok fazla faydası olmadı sadece hangi Pattern ne işe yarar nerede kullanılır gibi şeyleri birde havalı Pattern isimleri öğrenmiş oldum:) . Bir anda Pattern manyağı oldum çıktım :) . Etrafta deli gibi hangi Pattern’ı kodlarımın neresinde kullanabilirim onu arıyorum. Tabi bunun da çok fazla faydası olmadı. Gerçek anlamda kafamda Design Patterns kavramını oluşturmam yeni bir projeye başlamamla oldu. Kodda meydana gelen tasarım problemlerini daha önceden adlarını ve ne iş yaptıklarını bildiğim Pattern’ları kullanınca taşlar yerli yerine oturmaya başladı. Örnek olmadan bir tasarım,design problemi ile karşılaşmadan tasarım kalıbı kullanmanın verimli olmadığını o zaman anladım.

Bu konuda tavsiyem tek tek Design Pattern’ları okuyup ezberlemek yerine geliştirdiğiniz bir projede karşılaştığınız bir probleme ait bir tasarım kalıbı varmı yokmu onu araştırıp ardından bulduğunuz tasarım kalıbını orada kullanmanızdır. bu şekilde çok daha oturaklı şekilde öğrenmiş olursunuz. Benim gibi aynı kitabı birkaç defa okumak zorunda kalmazsınız.

3 thoughts on “Yazılım Mühendisiği Rehberi-Design Patterns

Comments are closed.