İçeriği atlamak için "Enter"'a basın

Etiket: effective java

Effective Java Madde 47: Dönüş Türü Olarak Stream Yerine Collection Tercih Edin

Bir dizi eleman döndüren metotlarla sıkça karşılaşırız. Java 8’den önce bu tür metotlar için dönüş türü olarak ya Collection, Set, List gibi koleksiyon türleri, ya Iterable ya da dizi türleri kullanılırdı. Çoğu zaman da bunlardan birisini seçmek zor olmazdı. Metodun amacı dönüş değerinin for-each döngüsünde kullanılmasını mümkün kılmaksa veya döndürülen…

Share
Bir yorum yazın

Effective Java Madde 46: Stream Kullanırken Yan Etkisi Olmayan Fonksiyonları Tercih Edin

Stream kullanmaya yeni başladıysanız alışmak zaman alabilir. Yapmak istediğiniz hesaplamayı stream hatları (stream pipeline) kullanarak ifade etmek zor gelebilir. Bunu başardığınız zaman da size pek bir faydası olmadığını düşünebilirsiniz. Streamler sadece yeni bir API değil, aynı zamanda bir fonksiyonel programlamaya yaklaşımıdır. Streamlerden en üst düzeyde faydalanabilmek için sadece API’ı değil…

Share
1 Yorum

Effective Java Madde 45: Streamleri Akıllıca Kullanın

Stream API Java 8 ile dile eklenmiştir ve sıralı veya paralel toplu işlemleri (bulk operations) kolaylaştırmak amacıyla kullanılır. Bu API stream denilen sonlu veya sonsuz sayıda eleman ve stream hattı (stream pipeline) denilen ve bu elemanlar üzerinde aşamalı olarak hesaplama yapan iki parçadan oluşur. Stream elemanlarının kaynağı diziler, koleksiyonlar (collections),…

Share
2 Comments

Effective Java Madde 44: Standart Fonksiyonel Arayüzlerin Kullanımına Öncelik Verin

Java diline lambdalar eklendikten sonra API yazmanın kuralları değişti diyebiliriz. Örneğin, Template Method tasarım desenini gerçekleştirirken çocuk sınıfların ata sınıftaki soyut metotları geçersiz kılması artık pek de çekici değildir. Bunun daha modern olan alternatifi fonksiyon nesnesi kabul eden bir statik fabrika veya yapıcı metot yazmak olacaktır. Genel olarak şunu söyleyebiliriz,…

Share
Bir yorum yazın

Effective Java Madde 43: Metot Referanslarını Lambdalara Tercih Edin

Lambda fonksiyonlarının isimsiz sınıflara göre avantajı daha kısa ve öz olmalarıdır. Java bizlere fonksiyon nesneleri tanımlamak için kullanılabilecek lambdadan daha kısa bir yol sunmaktadır: metot referansları. Şimdi elimizde belli anahtarları Integer değerlerine eşleştiren bir map olsun. Bu Integer değerler anahtarın veri yapısına kaç kere eklendiğini tutmaktadır. Yani ekleme işlemi yapılırken…

Share
Bir yorum yazın

Effective Java Madde 42: Lambda Fonksiyonlarını İsimsiz Sınıflara Tercih Edin

Eskiden beri tek bir soyut metodu olan arayüzler (veya çok nadir de olsa soyut sınıflar) fonksiyon türleri olarak kullanılmıştır. Bunların nesneleri de fonksiyon nesneleri olarak bilinirler ve bir işlevi veya eylemi temsil ederler. Java’nın ilk sürümünden itibaren fonksiyon nesneleri yaratmanın birincil yolu isimsiz sınıflar (anonymous class) kullanmaktı (Madde 24). Aşağıda…

Share
Bir yorum yazın

Effective Java Madde 41: İşaretçi Arayüzleri Tür Tanımlamak için Kullanın

İşaretçi arayüzler (marker interface) içlerinde hiçbir metot bulunmayan arayüzlerdir. Bunları uygulayan sınıfların amacı sahip oldukları bir özelliği ortaya çıkarmak için kendilerini işaretlemektir. Serializable arayüzü buna örnek olarak verilebilir. Bunu uygulayan sınıflar nesnelerinin bir ObjectOutputStream‘e yazılabileceğini diğer bir tabirle serileştirilebilir olduklarını belirtmiş olurlar. Madde 39’da anlattığımız işaretçi notasyonlar varken işaretçi arayüzlerin…

Share
Bir yorum yazın

Effective Java Madde 40: Override Notasyonunu Sürekli Olarak Kullanın

Java kütüphaneleri çok sayıda notasyon (annotation) barındırırlar. Çoğu programcı için bunların en önemlisi @Override notasyonudur. Sadece metot tanımlarında kullanılabilen bu notasyon metodun kalıttığı sınıf veya uyguladığı arayüzdeki başka bir metodu geçersiz kıldığını belirtir. Bu notasyonu düzenli olarak kullandığınız taktirde sizi birçok hatadan koruyacaktır. Şimdi harf ikililerini ifade etmek için yazılmış…

Share
Bir yorum yazın

Effective Java Madde 38: Enumlarda Kalıtımı Arayüz Kullanarak Taklit Edin

Madde 34’de enumlardan bahsederken enum türlerinin kalıtılamayan (final) sınıflara dönüştürüldüğü söylemiştik. Dolayısıyla bir enum türü başka bir enum türünü kalıtamaz. Enum türleri zaten dolaylı olarak java.lang.Enum sınıfından türetildikleri için başka sınıfları kalıtması da mümkün değildir. Bu durum çoğu zaman bir sorun teşkil etmese de bazı enumları kalıtma ihtiyacı duyabiliriz veya…

Share
Bir yorum yazın

Effective Java Madde 37: Ordinal İndisler Yerine EnumMap Kullanın

Madde 35’de çoğu programcının enum türleri için tanımlanan ordinal metoduna ihtiyacı olmayacağını ve bu sebeple de çok nadir durumlar haricinde kullanılmaması gerektiğini söylemiştik. Bu maddede ise bazı programcıların ordinal kullanmayı tercih ettiği bir iki özel durum üzerinde duracağız. Bazen ordinal metodunun bir dizi veya liste için indis (index) olarak kullanıldığını…

Share
Bir yorum yazın
%d blogcu bunu beğendi: