Static kullanımı nerelerde faydalı olur sorusu güzel bir soru olmuş
Java'da herşeyi static yaparsak java'yı C gibi kullanmış oluruz derdik biz eskiden. Peki hatalı bir davranış mı? Tabiki hayır. Static insanlar kullansınlar diye var :) Her ölçüden biraz makul kalabilmek lazım.
Bu soruya kesin doğru olacak bir cevap vermek sanıyorum çok kolay değil. OOP destekleyen (zorunlu koşan) dillerde sanıyorum static kullanımı en acı veren konulardan birisi, hemen heryerde bir sorun yaşama ihtimali var. Benim şimdiye kadar edindiğim tecrübe ile nerelerde kullanılabileceğini biraz açıklayayım.
- Herhangi bir global/sınıf bazında değişkene erişimi bulunmayan yerlerde, en azından başına bela almak istemiyorsan (en önemli tanım bu sanıyorum)
- Utility diye isimlendirilen yardımcı sınıflarda (burda da dikkat etmen gereken global değişkene erişim olmamalı)
- Yazdığın metod herhangi bir sınıfı yaratmadan bile kullanılacaksa,
En önemli soru; ilk soru. Mesela sen db işlemleri üzerinden sormuşsun. Db işlemlerini yaparken herhangi bir şekilde db connectiona ihtiyaç duyacaksın, bu connection nesnesini nerede tutacaksın? Static bir değişkende mi? Sorunların başlangıç noktalarından birisi. Static kullanma demiyorum ama her seferinde db connection açıp kapatacaksan ve bu açıp kapatmayı bir pool üzerinden alacaksan miss, çok güzel seçenek. Ama ben açarım connectionu atarım bir değişkene sonra kullanır kullanır dururum diyorsan sıkıntı. Sen kullanırken bir başka kullanıcı girer de kapatırsa ne olacak? Static olduğu için herkes tarafından kullanılıyor olacak. Bir dönemler sürekli yaşadığımız bir sorun. Düzelt düzelt bitmiyor.
Daha farklı bir tabirle; yazdığın metodun kullandığı değişkenler metodun hayatından uzunsa sıkıntı yaşaman çok muhtemel. Kullandığın değişkenler de o metodun hayatından kısa olursa sıkıntı yok, static yazmaya devam edebilirsin.
İyi çalışmalar.