YAZILIMCILARIN CAN SİMİDİ: SAVUNMACI KODLAMA

Savunmacı (defansive) kodlama bir yazılımın beklenmedik durumlarda bile çalışacağından emin olabilmeyi amaçlayan bir yaklaşımdır. Savunmacı kodlamadaki kaçınılacak kötü durumları betimlemek için Finagle’nin Kanunu örnek verilebilir. Finagle “Her şey ters gidebilir, bu terslik olabilecek en kötü anda olur” der. Kabul edelim birazcık Murphy Kanunları’na benziyor. Savunmacı kodlama teknikleri özellikle bir yazılımın yanlış yazılmış bir parçasında kullanım alanı bulurlar.

Tanımlamaya çalıştığımız savunmacı yaklaşım bu kaçınma tekniklerini üç ana öbekte toplar. Bunlar:

  • Genel kalite; yani yazılım hatalarını ya da sorunlarını en aza indirgeme
  • Kaynak kodu anlaşılır hale getirme
  • Yazılımın beklenmedik girdiler ya da kullanıcı davranışları karşısında vereceği tepkileri öngörülebilir hale getirme

Savunmacı bir anlayışla kod yazmanın temelinde etkin bir şekilde hataları en aza indirgeyerek kodlama yatar. Bunun için kullanılan en gözde tekniklerden birisi ise otomatikleştirilmiş kod denetimidir.

Yazdığınız kodu anlaması gereken sadece bilgisayarlar değildir. Başka insanlar da yazdığınız kodu rahatça anlayabilir olmalıdır. Eğer başka bir geliştirici kodu ne amaçla yazdığınızı anlayamazsa, kodunuz hakkında yanlış varsayımlarda bulunup uygun olmayan değişiklikler yapabilir. Tabii bu durumun sonucunun da hatalarla dolu bir yazılım olacağına şüphe yok.

Ayrıca yazdığınız kod anlaşılır olursa sizin de yazılım üzerinde düzeltme ya da geliştirme yapmak için harcayacağınız zaman daha az olacaktır.

Kodunuzu daha rahat anlaşılabilir yapmanın anahtarı “temiz kod” kavramında saklıdır. Temiz kod kavramı ilk kez Robert Martin’in “Clean Code: A Handbook of Agile Software Craftsmanship” kitabında ortaya atılmış ve açıklanmıştır. Kodunuz ne kadar temiz olursa o kadar kolay anlaşılabilir ve bu bağlamda o kadar kolay test edilebilir ya da sürdürülebilir.

Öngörülebilir tepkileri olan bir yazılım beklenmedik girdileri ya da kullanıcı eylemlerini öngörebilir ve ona uygun tepkiler göstererek durumu kontrol altına alabilir. Koruma koşulları (guard clauses), doğrulama (validation) ve hata işleyiciler (error handlers) kodunuzun tepkilerini daha öngörücü yapmak için kullanabileceğiniz teknikler arasında sayılabilir.

Bahsettiğimiz tüm bu kavramlar size tanıdık gelecektir. Fakat bir yazılım projesi içinde bu kuralları uygulamayı sıkılaştırmak hem projenizin daha başarılı olmasını hem de vaktinizi daha verimli kullanabilmenizi sağlayacaktır. Savunmacı kodlamanın savunduğu çoğu zaman hem vakit ve itibar kazancı ile geliştirici hem de programın işleyişinden doğacak zararları en aza indirgeyerek kullanıcı olacaktır.

Kaynaklar: http://en.wikipedia.org/wiki/Defensive_programming

http://msmvps.com/blogs/deborahk/archive/2014/05/16/what-is-defensive-coding.aspx

 



Eğitimlerle ilgili bilgi almak ve diğer tüm sorularınız için bize ulaşın!

Son Blog Yazılarımız

Sitemizi kullanarak çerezlere (cookie) izin vermektesiniz. Detaylı bilgi için Çerez Politika'mızı inceleyebilirsiniz.