Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi
0 oy
24 gösterim
Merhaba

Static ifadesini genelde nerelerde kullanmak faydalıdır?

Örneğin Database operation'ları yöneten bir class da uygulamak (örneğin bir id vererek select den bir satır döndürme) uygun olur mu?

Karşılaştığım bir konu da database operations içeren classta içerisinde(metodlarda) select ifadesini çekerken connection aç ve kapa da mevcut. Metod static olunca connection'ı da static yapmamızı istiyor yoksa kızıyor. connection'ın static olması 2 thread olduğunda bozulmalara neden olabilir. Bu gibi durumlar genel anlamdaki projelerde nasıl handle ediliyor?

Teşekkürler.
Java kategorisinde (207 puan) sordu

1 cevap

0 oy

Static kullanımı nerelerde faydalı olur sorusu güzel bir soru olmuş yes

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.

  1. 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)
  2. Utility diye isimlendirilen yardımcı sınıflarda (burda da dikkat etmen gereken global değişkene erişim olmamalı)
  3. 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.

(3.1k puan) cevapladı

İlgili sorular

0 oy
1 cevap 29 gösterim
29 gösterim 8 Ağustos 2017 Java kategorisinde erkanerkisi (207 puan) sordu
+1 oy
2 cevap 80 gösterim
80 gösterim 30 Ocak 2016 Genel Kavramlar kategorisinde kenan (3.1k puan) sordu
0 oy
1 cevap 65 gösterim
0 oy
1 cevap 112 gösterim
112 gösterim 13 Aralık 2016 Web Programlama kategorisinde buzel (567 puan) sordu
0 oy
1 cevap 7 gösterim
7 gösterim 5 gün önce Java kategorisinde ozerozdas (102 puan) sordu
...