Refactoring Nedir?
Blogumda genelde lisans dönemindeki arkadaşlarıma, kardeşlerime hitap ettiğim için bu yazımda da sizlere çok işinize yarayacak bir kavramdan bahsedeceğim. Refactoring. Bir çoğunuz duydunuz, duymayanlarınızda aslında bir şekilde bunu yapıyorlar fakat bu yazının amacı konuyu tam anlamıyla öğrenmek ve kafanızda (büyük ihtimalle) dağınık halde bulunan bilgileri toplayıp bütünleştirmek olacak. Ayrıca belki hiç bilmediğiniz ve denemediğiniz bazı teknikler de öğrenmiş olacaksınız. Tekniklerin hepsine bu yazıda değinemeyebilirim fakat en azından bir giriş olur diye düşünüyorum.
Bir tanım yapmak gerekirse;
Refactoring; yazılımı daha basit, daha anlaşılır, değiştirmesi daha kolay bir hale getirmek amacıyla iç yapısında yapılan ve yazılımın dış davranışını etkilemeyen değişikliklerdir.
Bu tanım üzerinde biraz durabiliriz. Öncelikle amaç belirtilmiş; yazılımı daha basit ve anlaşılır bir hale getirmek, değişmesi kolay yani flexible yapmak. Daha sonra bu amaca ulaşmak için ne yapmamız gerektiği söylenmiş; yazılımın iç yapısını değiştirmek. En sonda da önemli bir şart belirtilmiş; yazılımın dış davranışını etkilememek.
Java – Object Oriented Kavramı IV
Yazılım Tasarım Prensipleri özellikle büyük projelerde gerçekten önem arz ediyor. Proje boyunca en çok üzerinde durulması ve düşünülmesi gereken noktanın burası olduğunu yaşayarak anlamış bulunuyorum. Yazılım tasarımı derken kastettiğimiz ekranların tasarımı gibi birşey değil. Class hiyerarşisi, db yapısı, kullanılacak frameworkler ve bunların entegrasyonu, kullanılacak tasarım şablonları (design patterns) ve bunların uyumu gibi konuları kapsayan bir tasarımdan bahsediyorum. Burada dikkat edilecek pek çok nokta var. Ancak en temel ve objektif olanları yazılım tasarım prensipleri ismini haketmiş ve burada onlardan bahsedeceğiz.
Bu prensipleri üstad Robert Martin’in “Agile Software Development: Principles, Patterns, and Practices” isimli kitabında bulabilirsiniz. Bu fikirlerin ilk olarak toplandığı kitaptır ve çok değerlidir. Bu kitaba göre yazılımınızı tasarlarken 3 şeyden kaçının;