Koray Kırdinli

Yazılım ve İş Yaşamı Hakkında Paylaşımlar

Tasarım Desenleri – Single Responsibilty Prensibi

Kod geliştirmeye ilk başladığımızda hepimiz şöyle bir yol izlemişizdir. Yeni bir proje oluştur önüne gelen ilk sınıfa bütün kodları yerleştir. Bir sınıf her şeyi yapardı ; ekrana veriyi gösterir , veritabanına kaydeder, excel export eder vs…Daha sonra proje büyüdükçe farkına varırız ki bazı işlemleri ayırıp projenin bir başka tarafında da kullanmak kodun kopyalanıp yapıştırılmasından daha etkin bir yöntem olduğunu anlarız.

Peki neden? Bir işi tekrar tekrar yapmak insanın canını sıkabiliyor. Ayrıca bir değişiklik gerektiğinde CTRL-F ile o kodları projede bulup hepsini teker teker değiştirmek zorunda kalıyoruz. Hem yönetilmesi hem de bakımı çok zor kodlar oluşuyor zaman içerisinde. Daha sonra uygulamayı sınıflara bölmek de yetmemeye başlıyor ve projelere ayırıyor ki başka projelerde direk referans alarak kullanabilelim.Hatta katmanlara ayırıyoruz klasik olarak veri, iş ve gösterim katmanları. Her bir katmanı bağımsız olarak başka projeler ile kullanabilecek şekilde tasarlamaya çalışıyoruz. Her ne kadar pratikte mükemmeli yakalayamasakta.

Bir sınıfın ne kadar çok sorumluluğu olursa başka sınıflara olan bağımlılıkta buna paralel olarak artmaktadır. Mantığımız değişmesi muhtemel sınıfları olabildiğinde diğer sınıflardan soyutlamak olmalıdır.Ayrıca en basit ve anlaşılır yazmalı kodumuza bakan bir programcı düz bir yazı okuyormuş gibi hissetmeli kendisini. Pratikte her şey maalesef ki her zaman istediğimiz gibi olmuyor ancak olabildiğince bunlara dikkat etmekte fayda var.

Örneğin bir Musteri isminde sınıfımız varsa bu sınıf sadece müşterinin özelliklerini taşımalı adı,soyadı,bakiyesi gibi. Bu sınıfta hiçbir şekilde bir sql cümlesi yer almamalıdır.

November 6, 2010 - Posted by | C# | ,

No comments yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s