Diyelim ki 0 ile belli bir üst sınır değeri arasında rastgele sayılar üretmek istiyorsunuz. Birçok programcı bu işi yapmak için aşağıdaki gibi bir kod yazabilir: Bu metot doğru gibi görünse de oldukça hatalıdır. Seçtiğiniz n değerine bağlı olarak bazı sayıların diğerlerine kıyasla daha sık üretilmesi söz konusudur. Aşağıdaki kod önce…
2 CommentsEtiket: effective java
Bu madde ile Madde 15: Sınıfların ve Üyelerinin Erişilebilirliğini Kısıtlayın benzer tavsiyelerde bulunmaktadır. Yerel değişkenlerin etki alanını (scope) kısıtlayarak hem kodunuzun okunabilirliğini ve bakım yapılmasını kolaylaştırırsınız, hem de hata yapılmasının önüne geçmiş olursunuz. C gibi eski programlama dillerinde, yerel değişkenlerin blokların başında tanımlanması zorunluydu ve bazı programcılar da bunu alışkanlık…
Bir yorum yazınJava 8’den önce, belli durumlarda değer döndüremeyen bir metot yazabilmek için iki farklı yöntem mevcuttu. Bunlardan birincisi aykırı durum (exception) fırlatmak, ikincisi ise metodun dönüş türü nesne referansı ise null döndürmektir. Bu yaklaşımların ikisi de mükemmel değildir. Aykırı durumlar istisnai durumlar için kullanılmalıdır (Madde 69) ve aynı zamanda yaratılması masraflıdır.…
Bir yorum yazınAşağıdakine benzer metotlar sıklıkla karşımıza çıkmaktadır: Yukarıdaki kodda peynir listesinin boş olduğu durumu özel bir durum gibi ele alıyoruz. Bu son derece gereksizdir. Bu, istemciyi de null denetimi yapmaya mecbur bırakacaktır: Boş bir koleksiyon veya dizi yerine null döndüren bütün metotlar bu soruna yol açar. Hata yapmaya çok elverişlidir çünkü…
Bir yorum yazınVarargs Java dilinde belirli bir türden sıfır veya daha fazla sayıda argümanı bir metoda tek seferde geçmemizi sağlayan bir mekanizmadır. Variable arity yani değişken sayılı argümanlar ifadesinin kısaltılmasıdır. Arka planda bu mekanizma değişken sayıdaki argümanların toplanıp tek bir dizi içerisinde saklanması ve bu dizinin metoda geçilmesi mantığıyla çalışır. Örneğin, aşağıda…
Bir yorum yazınAşağıdaki program koleksiyonlar (collection) üzerinde gruplama yapmaya çalışmaktadır: Bu programın önce Set sonra da List ve Unknown Collection değerlerini üreteceğini düşünebilirsiniz ancak böyle olmaz. Üç kere Unknown Collection çıktısı üretir. Peki bu neden olmaktadır? Çünkü classify metodu aşırı yüklenmiştir ve bu durumda hangi metodun çalıştırılacağına derleme anında karar verilir. Döngüye…
Bir yorum yazınBu madde çeşitli API tasarım önerilerinin toplandığı bir yazı. Bu öneriler uygulandığı taktirde API’ınızın anlaşılmasını kolaylaştıracak ve hata ihtimalini minimuma indirecektir. Metot isimlerini dikkatli seçin. İsimler her zaman için standart isimlendirme modellerini takip etmelidir. (Madde 68) Ana hedefiniz anlaşılabilir ve aynı pakette kullanılan diğer isimlerle tutarlı olan isimler seçmek olmalıdır.…
Bir yorum yazınJava kullanmayı keyifli kılan şeylerden bir tanesi güvenli bir dil olmasıdır. C ve C++ dillerinde karşılaşabileceğiniz gösterge problemleri, bellek taşmaları ve yine bellekte yaşanabilecek bozulmalara karşı dirençlidir. Güvenli bir dil kullanırken, programın başka yerlerinde ne olursa olsun yazdığınız bir sınıftan yaratılan nesnelerin durumlarının sizin koyduğunuz kurallar çerçevesinde şekillenmesini sağlayabilirsiniz. Bunu…
Bir yorum yazınÇoğu metot ve yapıcı metot parametre geçilen değerler için kısıtlamalar koyar. Örneğin dizin (index) değerlerinin pozitif tamsayı olması ve nesne referanslarının null olmaması gibi kısıtlamalarla sıklıkla karşılaşırız. Bu kısıtlamaları metot gövdesinin başında uygulamalı ve açıkça belgelemelisiniz. Bunu yaptığımız taktirde hataların olabildiğince erken saptanması mümkün olabilir, aksi taktirde bunu geciktirmiş oluruz…
1 YorumYaygın olarak kullanılan programlama dilleri arasında Java, paralel programlamayı kolaylaştıran araçlar sunma konusunda her zaman en önde olmuştur. 1996’da Java ilk ortaya çıktığında wait/notify mekanizması ile threadleri destekliyordu. Java 5 java.util.concurrent paketiyle beraber paralel koleksiyonlar ve executor yapısını dile eklerken, Java 7 ile fork-join mekanizmasına kavuştuk. Java 8 ise tek…
Bir yorum yazın