Effective Java Çevirisi

Her Java yazılımcısının okuması gereken kitapların başında Joshua Bloch’un yazdığı Effective Java kitabı gelmektedir. Java dilini detaylarıyla inceleyen ve 2017 sonlarında Java 9’a göre güncellenen bu kitap geçerliliğini Java var olduğu sürece sürdürecektir ancak Türkçe çevirisi tahmin edeceğiniz üzere yok.

Ben de hem Java öğrenmek isteyenlere hem de ileri seviyede Türkçe kaynak bulmakta zorlanan arkadaşlara yardımcı olmak amacıyla kitabı madde madde çevirmeye başladım. Aşağıda çevirdiğim kısımlar kitabın birebir tercümesi değildir, yer yer eklemeler/çıkartmalar yaparak ve cümleleri farklı şekilde ifade ederek anlaşılmasını kolaylaştırmaya çalıştım. Kitabı orijinal dilinde okuyan arkadaşlar bir hata görürlerse lütfen bildirsinler.

Önemli gördüğüm maddeleri kitabın başından başlayarak çevirmeye çalışacağım. Daha erken çevirmemi istediğiniz kısımlar varsa da lütfen bildirin, maddeler genellikle birbirinden bağımsız olduğu için sırasına göre takip etmek şart değil.

Nesne Yaratmak ve Yok Etmek

Effective Java Madde 1: Yapıcı Metot (Constructor) Yerine Statik Fabrika Metotlarını Kullanın
Effective Java Madde 2: Çok Sayıda Parametreyle Karşılaştığınızda Builder Kullanın
Effective Java Madde 3: Singleton Sınıfları Private Yapıcı Metot veya Enum Türüyle Güçlendirin
Effective Java Madde 4: Nesne Yaratılmasını İstemediğiniz Sınıfları Private Yapıcı Metot İle Güçlendirin
Effective Java Madde 5: Bağımlılıkları Kendiniz Yaratmak Yerine Dependency Injection Kullanın
Effective Java Madde 6: Gereksiz Nesne Yaratmaktan Kaçının
Effective Java Madde 7: Erişilmeyen Nesnelerin Referanslarından Kurtulun
Effective Java Madde 8: Finalizer (Sonlandırıcı) ve Cleaner (Temizleyici) Kullanmaktan Kaçının
Effective Java Madde 9: try-finally Yerine try-with-resources Tercih Edin

Bütün Nesnelerin Ortak Metotları

Effective Java Madde 10: equals() Metodunu Geçersiz Kılarken Sözleşmeye Uyun
Effective Java Madde 11: equals() ile Birlikte Mutlaka hashCode() Metodunu da Geçersiz Kılın
Effective Java Madde 12: toString() Metodunu Her Zaman Geçersiz Kılın
Effective Java Madde 14: Comparable Arayüzünü Gerektiğinde Uygulayın

Sınıflar ve Arayüzler

Effective Java Madde 15: Sınıfların ve Üyelerinin Erişilebilirliğini Kısıtlayın
Effective Java Madde 16: public sınıflarda erişim metotları kullanın, public alanlar değil
Effective Java Madde 17: Değişebilirliği (Mutability) Kısıtlayın
Effective Java Madde 18: Kalıtım Yerine Komposizyonu Tercih Edin
Effective Java Madde 19: Kalıtımı ya Tasarım ve Dokümantasyon ile Destekleyin ya da Yasaklayın
Effective Java Madde 20: Arayüzleri Soyut Sınıflara Tercih Edin
Effective Java Madde 21: Arayüzleri İleriyi Düşünerek Tasarlayın
Effective Java Madde 22: Arayüzleri Sadece Tür Tanımlamak İçin Kullanın
Effective Java Madde 23: Sınıf Hiyerarşilerini İşaretli Sınıflara Tercih Edin
Effective Java Madde 24: Statik Üye Sınıfları Statik Olmayanlara Tercih Edin
Effective Java Madde 25: Bir Kaynak Dosyada Gömülü Sınıflar Hariç Tek Bir Sınıf Tanımlayın

Üreyseller (Generics)

Effective Java Madde 26: Ham (raw) Türleri Kullanmayın
Effective Java Madde 27: Kontrolsüz Uyarılardan (unchecked warning) Kurtulun
Effective Java Madde 28: Listeleri Dizilere Tercih Edin
Effective Java Madde 29: Üreysel Türleri Tercih Edin
Effective Java Madde 30: Üreysel Metotları Tercih Edin
Effective Java Madde 31: API Esnekliğini Artırmak İçin Sınırlandırılmış Joker (bounded wildcard) Kullanın
Effective Java Madde 32: Üreysellerle varargs Metotları Birlikte Kullanırken Dikkatli Olun
Effective Java Madde 33: Tür Güvenlikli Heterojen Taşıyıcıları Göz Önünde Bulundurun

Enumlar ve Notasyonlar (Annotations)

Effective Java Madde 34: int Değişmezleri Yerine Enum Kullanın
Effective Java Madde 35: Ordinal Yerine Nesne Alanları Kullanın
Effective Java Madde 36: Bit Alanları Yerine EnumSet Kullanın
Effective Java Madde 37: Ordinal İndisler Yerine EnumMap Kullanın
Effective Java Madde 38: Enumlarda Kalıtımı Arayüz Kullanarak Taklit Edin
Effective Java Madde 39: Notasyonları İsimlendirme Modellerine Tercih Edin
Effective Java Madde 40: Override Notasyonunu Sürekli Olarak Kullanın
Effective Java Madde 41: İşaretçi Arayüzleri Tür Tanımlamak için Kullanın

Lambda Fonksiyonları ve Streamler

Effective Java Madde 42: Lambda Fonksiyonlarını İsimsiz Sınıflara Tercih Edin
Effective Java Madde 43: Metot Referanslarını Lambdalara Tercih Edin
Effective Java Madde 44: Standart Fonksiyonel Arayüzlerin Kullanımına Öncelik Verin
Effective Java Madde 45: Streamleri Akıllıca Kullanın
Effective Java Madde 46: Stream Kullanırken Yan Etkisi Olmayan Fonksiyonları Tercih Edin
Effective Java Madde 47: Dönüş Türü Olarak Stream Yerine Collection Tercih Edin
Effective Java Madde 48: Streamleri Paralel Yaparken Dikkatli Olun

Share

8 Replies to “Effective Java Çevirisi”

  1. Yaptığın çevirileri okuma fırsatım olmadı fakat, en yakın zamanda blogunu incelemeye başlayacağım. Yaptığın şey harbiden çok güzel, devam etmeni dilerim 🙂

  2. Merhaba Seçkin bey,

    “Effective Java” çevirisi fikri çok güzel. Bu çeviriyi hem en kısa zamanda bitirmek lazım hem de duyurmak gerekli ki insanlar faydalansınlar. İş-güç arasında bloga vakit ayırmak kolay değil, biliyorum. Ama bu çalışma yarım kalmamalı diyorum 🙂

    Kolay gelsin.

    Akın

    1. Akın Bey merhaba,

      Yorumunuz icin cok tesekkur ederim. Bu sekilde geri bildirimler almak insani daha cok yazmaya tesvik ediyor. Dediginiz gibi is guc arasinda vakit ayirmak zor ama ilk firsatta kitabin diger kisimlariyla devam etmeyi dusunuyorum.

      Iyi calismalar

  3. Merhaba Seçkin Bey,

    Emeğiniz için teşekkürler. Diğer bölümler için takipteyiz. Umarım en kısa zamanda bizleri bilgilendirirsiniz. İyi çalışmalar

  4. Merhaba,
    Çok güzel ve anlamlı bir yazı dizisi olmuş, tamamlanmasını temenni ediyorum. Çalışmalarınızda başarılar.

Bir Cevap Yazın