Press "Enter" to skip to content

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

Metotlar

Effective Java Madde 49: Parametrelerin Geçerliliğini Kontrol Edin
Effective Java Madde 50: Gerektiğinde Koruyucu Kopyalar Yaratın
Effective Java Madde 51: Metot İmzalarını Dikkatli Tasarlayın
Effective Java Madde 52: Aşırı Yüklemeyi (Overlading) Dikkatli Kullanın
Effective Java Madde 53: Değişken Sayılı Argümanları (varargs) Dikkatli Kullanın
Effective Java Madde 54: Null Yerine Boş Koleksiyon veya Dizi Döndürün
Effective Java Madde 55: Optional Döndürürken Dikkatli Olun

Genel Programlama

Effective Java Madde 57: Yerel Değişkenlerin Etki Alanını Kısıtlayın
Effective Java Madde 58: Klasik for Döngüleri Yerine for-each Tercih Edin
Effective Java Madde 59: Kütüphaneleri Öğrenin ve Kullanın
Effective Java Madde 60: Net Sonuçlar Almak İstiyorsanız double ve float Kullanmaktan Kaçının
Effective Java Madde 61: Kutulanmış (boxed) Yerine Temel Türleri Tercih Edin
Effective Java Madde 62: Diğer Türlerin Daha Elverişli Olduğu Durumlarda String Kullanmaktan Kaçının
Effective Java Madde 63: String Birleştirme Yaparken Performans Kayıplarına Dikkat Edin
Effective Java Madde 64: Nesneleri Arayüz Türleri Üzerinden Kullanın

Share

23 Comments

  1. hakan
    hakan October 24, 2015

    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. Akın Kaldıroğlu
    Akın Kaldıroğlu December 5, 2015

    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

    • seckintozlu
      seckintozlu December 9, 2015

      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. Kenan Hançer
    Kenan Hançer January 2, 2016

    Merhaba,

    Bloğuna gerçekten ciddi emek harcamışsın. Eline sağlık çok beğendim.

  4. Ömer Faruk Kurt
    Ömer Faruk Kurt May 24, 2016

    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

  5. Burak Erkan
    Burak Erkan August 19, 2016

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

  6. Atakan Çoban
    Atakan Çoban March 8, 2017

    Merhaba,
    Çok güzel anlatmışsınız elinize sağlık.

  7. Mahmut Savur
    Mahmut Savur May 18, 2020

    Merhaba,
    Güzel ve anlayabilecek sekilde anlatmissiniz. Elinize saglik.

  8. İsmail KOYUNCU
    İsmail KOYUNCU August 5, 2020

    Merhaba hocam.Çok teşekkürler.Başarılarınızın devamını dilerim.Saygılar,sevgiler.

  9. Uğur.
    Uğur. August 13, 2020

    Sen var ya meleksin. Teşekkürler emeğine sağlık. Şu dönemde ilaç gibi geldin.

  10. Can
    Can June 25, 2021

    Selam bu çeviriler hangi baskının çevirileri?

    Yazının içeriğinde “Java dilini detaylarıyla inceleyen ve 2017 sonlarında Java 9’a göre güncellenen bu kitap….” şeklinde bir ibare var ama bu post 2015 yılında oluşturulmuş.

    • seckintozlu
      seckintozlu June 25, 2021

      İlk başladığımda 2. baskı vardı onu kullandım, sonra 3. baskı çıkınca çevirileri gözden geçirip guncelledim yenisine göre.

  11. Ferhad Musayev
    Ferhad Musayev June 27, 2021

    Öncelikle Baküden selamlar. Elinize saglik. Tam ihtiyacim olan sheyi bu blogda buldum . Iyi ki yapmishsiniz . Bunun icin size çok çok minnetdarim. Basharilar ❤️

  12. Bertug Mete
    Bertug Mete November 19, 2021

    Merhaba, paylaşımın için çok teşekkürler, ellerinize sağlık. Effective Java kitabını okurken paralelde senin paylaşımlarını da okumak oldukça verimli oluyor.

  13. Mustafa Çil
    Mustafa Çil December 13, 2021

    Merhaba,

    Emeklerin için gerçekten çok teşekkür ederim. Çok sağol.

  14. kaan
    kaan January 11, 2022

    Emeğinize sağlık indirdim bütün maddeleri yarın üniversite kırtasiyesine gidip kitap haline getiricem teşekkürlerr

  15. fevzi
    fevzi March 12, 2022

    emeğinize yüreğinize sağlık. çok büyük bir iş yapmışsınız tebrikler.

  16. mirac
    mirac June 29, 2022

    harika bir iş çıkartmışsınız Allah razı olsun

  17. altug
    altug October 2, 2022

    Furkan Sönmez Effective Java video eğitimi ile paralel okumaya çalışıyorum ve güzel bir pekiştirme sağlıyor. Emeğiniz için teşekkür ederim

  18. Leyla
    Leyla November 16, 2022

    Seçkin Bey siz nasıl bir kralsınız acaba 🙂 Bir konu araştirmak için googlelar iken bir yazınıza denk geldim ve 10 farklı blog da okuyup anlamadığım ya da bulamadığım detayları buldum yazılarınızda. Emeğinize sağlık. Gerçekten özenle hazırlandığı çok belli yazılarınızın çok teşekkürler.

  19. Elshan
    Elshan January 2, 2023

    Merhaba.Emeğiniz için teşekkür ederim.İngilizcesine baktım 3 ana konuyu eklememişsiniz.Exceptions,Concurrency,Serialization.Bu konularıda eklerseniz sevinirim.

  20. Barış
    Barış March 28, 2023

    Teşekkür ederim bu çeviri için, bazen direkt çevirip o çeviriden anlamak zor olabiliyor siz anlaşılır bi şekilde önemli yerleri yazmışsınız, faydanız için teşekkürler.

  21. Necmettin UZUN
    Necmettin UZUN May 2, 2023

    Seçkin Bey Merhaba,
    Böyle değerli bir çalışmayı dilimize kazandırdığınız için çok teşekkürler

Leave a Reply to Ömer Faruk KurtCancel reply