ya DB'den veri ceksin yada bi URL'e get request atsin.
yani ortak yanlari dis mihraklarla calisiyor olmalari.
bu tarz fonksiyonlar:
-islem sonucunun basarili olup olmadigini gostermek icin boolean mi donmeli
yoksa
-zaten iclerinde gerekli exception'lar catch'leniyor, olasi bir sorunda haberin olur diye void mi olmali
nasil olmali yaklasim?

void olmalı. parse error vermemesi için boolean'dan get edebilirsin ama o zaman da içine return false verdiğinde trigger yapan bir setup koymalısın.


genellikle exception cikarsa bilgi alabilmek icin string kullaniyorum.
eger kullaniciya bilgi gostermen gerekmiyorsa ama sonuc lazimsa bool kullanabilirsin.
soruyu mimariden, dilden, gereksinimlerden bagimsiz cevepladigimi belirteyim.


finksiyondan disari kendi tasarlayabilecegin( MyResponse diyelim) zengin bir obje donebilirsin. MyResponse sinifinin icinde asagidagi alanlar olur:
response code (int)
Response desc (string)
ResponseData (generic type)
Exception (ex tipinde)
Bu sayede fonksiyonu cagiran tarafta hep standart bir paketi handle edersin.
Bu yaklasim tarzi basi design patternlerde kabul gormeyebilir.


Zaten sonrak işlemleri gerçekleştirmesi için dbye bağlanması lazım mesela. O sebeple sonrasının devamı için o işlemlerin geçrekleşmesi lazım. Gerçeklşmemişse printstackte dönüyor zaten ve somnrasında errorhandling tarzı metotlar yapıyorum. MEsela android lokasyonda fusiden alamayınca normal locationrequeste geç diyorum. Boolean çok nadir kulalnıyorum.


şimdi burada şöyle bir durum var, diyelim ki bir yere istekte bulunuyorsunuz ve istek başarısız, bu durumda bu bilgiyi bir yere kaydedip başarısız ise hemen veya daha sonra denemeniz gerekiyor ise boolean veya duruma göre sum (obje vs.) döndürmeniz mantıklı, ama fire and forget gibi dene olursa ekime olmazsa ... durumu var ise void.
eğer hemen X adet denemeniz gerekiyor ise döngü yerine recursive kullanıp boolean döndürmek yerine kendisini çağırmanız daha mantıklı zira her return bildirimi stack üzerinde işlem yapılmasına neden oluyor bu da stack'in şişmesine ve performans problemlerine neden olabiliyor.
for more information read "tail call" tabii birde premature optimizations root of evil.
