Skip to content

An application made with similar examples of the codes written in the Effective Java book

Notifications You must be signed in to change notification settings

mehmetozdeemiir/effective-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Effective Java kitabından aldığım notlar

  • Consturtorlar yerine static factory methodları tercih edilebilir.

  • Static factory methodları Constructorların aksine her çağırıldığında yeni bir instance oluşturması gerekmez.

  • Çok sayıda parametreyle karşılaştığınızda builder kullanın.

  • Üst üste Consturtorlar oluşturmamak için Builder kullanılabilir(Telescope Patterndan kaçınmak).

  • Singleton sınıfları private yapıcı metot veya enum türüyle güçlendirin.

  • Utility sınıflar projede bir çok yerde kullanacağımız metodları barındırır metodları static işaretlenir.

  • Utility sınıflardan nesne oluşturulması uygun görülmez. Bir sınıfın nesnesini oluşturmayı engellemek isterek boş bir private constructor tanımlayabiliriz.

  • Utility sınıfları abstract yapmayın. Abstract sınıfın nesnesi oluşturulamaz fakat extend eden bir alt sınıfın nesnesini oluşturabilirsiniz buda bizi yanlış yönlendirebilir.

  • Bağımlılıkları kendimiz yaratmak yerine Dependency Injection kullanırız. Sigletondan daha kolay ve efektif.

  • Gereksiz nesne yaratmaktan kaçınılmalıdır. Örneğin: String c = new String("abc"); -- String d = new String("abc"); -- System.out.println(c == d); // False döner

  • Equals() iki nesnenin referansının aynı olup olmadığını kontrol eder.

  • Bir anlaşma olarak equals metodunun override edildiği her sınıftta hashCode metodu da override edilmelidir.

  • Sadece equals metodunu override edersem nesnelerim equals metodu ile eşit görünse de hash kod değerleri farklı olacak.

  • Sadece hashCode metodunu override edersem nesnelerim aynı hash code değerine sahip olmasına rağmen equals metodu bu 2 nesnesin farklı olduğunu söyleyecek.

  • toString() metodu Object sınıfında tanımlanmış bir metottur ve nesnelerin metin karşılıklarını ekrana yazmak için kullanılır. Eğer nesnelerin metinsel bir karşılığı yoksa nesnenin hafızadaki adresini döndürür.

  • toString() kullanılmamış bir sınıfda objenin çıktısı hashCode un hexadecimal karşılığında gösterimi olur.

  • Comparable interfacei sınıfın instancelerini bir sıraya sokabiliyor, kıyaslayabiliyor hale getiriyor.

  • Comparable interfacesini uygulayarak, sınıfınızın nesneleri arasında sıralama yapılabileceğini belirtmiş olursunuz. Bu arayüzü uygulayan nesnelerden oluşan bir diziyi sıralamak çok kolaydır.

  • Sınıf final ise sınıf extend edilemez.(immutable)

  • Method final ise override edilemez.(immutable)

  • public static final String c="c"; //başka sınıftan erişilebilir fakat değeri değiştirleme (immutable)

  • private static String b="b";//private static i ezemez yine sadece bulunduğu sınıf tarafından erişilebilir.

  • Protected: aynı paket içerisinden ve extend yada implement edildiği sınıfdan erişilir.

  Encapsulation veriyi kontrollü tutmamızı sağlar.

  1- Doğrudan erişilebilirlik kalkar(get set ile dolaylı erişim)

  2- Set ile verilerimde kontrol sağlayabliyorum.

  3- Read only (set kaldırmak istenirse)

  4- Write only(get kaldırmak istenirse)
  • Bir nesne oluşturulduğunda o nesnenin değerini değiştirebiliyorsanız Mutable değiştiremiyorsanız Immutable.
  • Abstract sınıfların abstract metodları implement edilmek zorundadır.
  • Bir classa abstract metod yazıyosak bulunduğu classında abstract olması gerekli.
  • Abstract classlar ise objenin karakteristik özelliklerini barındırır daha çok.
  • Interfaceler özellikleri temsil eder, neler yapabileceğini söyler.
  • Interface'e yazılan bütün metodlar override edilmek zorundadır ve metodun içi boş bırakılır override edildiği yerde doldurulur.
  • default isaretlenirse override edilme zorunlulugu yok fakat child classslarda kullanılabilir.
  • Ham (raw) türleri kullanılmamalı.
  • Stream nedir? -> Java8 + sıralı paralel toplu işlemleri kolaylaştırmak için gelmiştir.
  • Generic method compile time da tip güvenliği,autoboxing unboxing gibi cast operasyonlarının önüne geçmemizi ,daha esnek bir yapı sağlıyor.
  • Listeleri dizilere tercih edin.
  • Lambda : kendi başına tanımlanabilen , parametre kabul eden ve döndürülebilen fonksiyondur.
  • Metot referanslarını lambdalara tercih edin
  • Klasik for döngüleri yerine for-each tercih edilmeli.

About

An application made with similar examples of the codes written in the Effective Java book

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages