SlideShare a Scribd company logo
JAVA BY
COMPARISON
SIMON HARRER, J.LENHARD, LINUS DIETZ
HAZIRLAYAN İBRAHIM KÜRCE
Java By Comparison
1-İLKEL(PRİMİTİF) BOOLEAN KARŞILAŞTIRMA
• İlkel boolean değerleri karşılaştırmalarda kullanmamak gerek
• Kodda bulunan gürültülerdir
• Anti-pattern’dir
• Okumayı zorlaştırır
Java By Comparison
Java By Comparison
2-OLUMSUZLUKTAN KAÇININ
• Her zaman pozitif olun. Çünkü anlaması daha kolaydır
• !(değil) işaretini mümkün olduğunca kullanmayın
Java By Comparison
2.OLUMSUZLUKTAN KAÇININ
• isInorganic() yerine isOrganic() kullandık. If ve else yerleri değişti
• Pozitif anlam oluşturduk
• !(Değil) ifadesini kaldırdık. If ve else yerleri değişti
• Az bir iş gibi görülebilir, proje büyüdükçe çok büyük farklar oluşturur
Java By Comparison
3.BOOLEAN İFADELERİ DİREK DÖNÜN
• Gereksiz if ifadelerini temizleyin
• Daha fazla karmaşa oluşturur
Java By Comparison
3.BOOLEAN İFADELERİ DİREK DÖNÜN
• Daha az kod satırı
• Daha az hizalama ve daha az iç-içe ifadeler
• De Morgan Kanunu’nu kullanabiliriz,
• !A && !B == !(A || B) // true
• !A || !B == !(A && B) // true
3.BOOLEAN İFADELERİ DİREK DÖNÜN
• Hatta alt parçalara bölebiliriz,
Java By Comparison
4.BOOLEAN İFADELERİ BASİTLEŞTİRİN
• Çoklu ifadelerin anlaşılması ve değiştirilmesi zordur
Java By Comparison
4.BOOLEAN İFADELERİ BASİTLEŞTİRİN
• Gerekirse ekstra metodlar ekleyin
• Metodların anlamlı-güzel isimleri olsun, içeriğine bakma gereği duymayalım
Java By Comparison
5.KOŞULLU IFADELERDE NULL HATASINA DIKKAT
EDIN
• NullPointerException en çok gördüğümüz hatalardan
• İfadelerin sırasına dikkat edin
Java By Comparison
5.KOŞULLU IFADELERDE NULL HATASINA DIKKAT
EDIN
• message ve location değişkenleri null kontrolü eklendi
• İfade sırasında null kontrolü ilk sıraya alındı
• Java ve diğer dillerde artık Optional(?) ile null pointer hatası azaltılmaya çalışılıyor
Java By Comparison
6.SWITCH AKIŞINA DİKKAT EDİN
• Switch ifadesi Java gibi bazı dillerde önceden beri kötü şöhrete sahiptir
• break kullanımına dikkat etmek gerekir
Java By Comparison
6.SWITCH AKIŞINA DİKKAT EDİN
• Her case sonuna mutlaka break koyun
• Bazı durumlarda switch yerine if kullanmak ve ayrı bloklarda kodları yönetmek
doğru olur
• Burada yetkili ve yetkisiz kullanıcılar aynı yerde yönetiliyor
Java By Comparison
7.HER ZAMAN SÜSLÜ PARANTEZ{} KULLANIN
• Hizalama bazen yanıltıcı olabilir
• Hatayı ararken saatleriniz heba olmasın
Java By Comparison
7.HER ZAMAN SÜSLÜ PARANTEZ{} KULLANIN
• Derleyici süslü parantezler eklenmiş gibi kodu yorumlar. Bu da istenmeyen bir
duruma yol açar
• Her zaman daha az kod daha iyi demek değildir
• 2014 yılında Apple geliştiricisi iOS üzerinde SSL/TLS çalışırken bu hatayı yaptı ve
bu yüzden sistemlere saldırılar oldu
• Her zaman süslü parantez eklemek gerekir
• 16
8.KOD SIMETRISINI SAĞLAYIN
• Bütün koşullar ardı sıra devam ediyor
• Biraz daha büyüyünce bulmaca gibi olur, karmaşıklaşır
• Bütün koşullu ifadeler benzer bir amaca mı yönelik?
• Kod simetrisi yok
Java By Comparison
8.KOD SIMETRISINI SAĞLAYIN
• Yetkili ve yetkisiz kodu ayırmış olduk
• İkinci kısım simetri olmuş oldu
Java By Comparison
9.SIHIRLI(MAGIC) SAYILARDAN KURTULUN
• Sihirli sayı: Kod içinde bulunan bakınca anlaşılmayan, rastgele sayılar
• Hataya yol açarlar
Java By Comparison
9.SIHIRLI(MAGIC) SAYILARDAN KURTULUN
• Anlaşılır ve erişebilir değişkenler tanımlayın ve onları kullanın
• Kimse bu sayı(veya string) nedir diye düşünmek zorunda kalmaz
Java By Comparison
10.SABIT DEĞIŞKENLER YERINE ENUM TERCIH EDIN
• Sabit değişkenler çok artarsa takip edilmesi zorlaşır
• İstenilen durumlar için ayrıca farklı değerler atanma olasılığı var
• Bu seferde metod ekstra kontroller yapması gerekiyor
Java By Comparison
10.SABIT DEĞIŞKENLER YERINE ENUM TERCIH EDIN
• Enum bize ekstra güvenlik sağladı
• Fazladan kontrollere gerek kalmadı
• Derleme zamanında kontrollerin önüne geçmiş olduk
• İf-else bloklarından bile kurtulduk
Java By Comparison
11.KLASİK FOR YERİNE FOR-EACH KULLANIN
• Yeniliklere açık olun
• Index için kullanılan i değişken değeri değişebilir ve hata alınabilir
Java By Comparison
11.KLASİK FOR YERİNE FOR-EACH KULLANIN
• Konuşma diline daha yakın, for each check in checks…
• Index değişkeninden ve hata alma ihtimalinden kurtulduk
• Eski yönteme çok az ihtiyaç duymalısın
Java By Comparison
12.DÖNGÜ SIRASINDA DEĞIŞIKLIK YAPMA
• Uygulamanın çakılmasına yol açabilir
• ConcurrentModificationException hatası üretir
Java By Comparison
12.DÖNGÜ SIRASINDA DEĞIŞIKLIK YAPMA
• Iterator liste üzerinde elemanlara işaretçi gibi çalışır
• Liste üzerinde güncelleme işlemleri için tasarlanmıştır
• hasNext ile garantiye almış oluruz
SON

More Related Content

PDF
Sonraki Yazılımcıya Anlatır Gibi Kod Yazmak
PPTX
Introduction to Java programming
PDF
Başarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme Pratikleri
PPTX
Java ile programlamaya giris ramadan sanli
PPTX
Yazılım Prensipleri ve Code Review Check List
PPTX
Temiz Kod
PDF
C# programlama dili
PPTX
Karar kontrol deyi̇mleri̇
Sonraki Yazılımcıya Anlatır Gibi Kod Yazmak
Introduction to Java programming
Başarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme Pratikleri
Java ile programlamaya giris ramadan sanli
Yazılım Prensipleri ve Code Review Check List
Temiz Kod
C# programlama dili
Karar kontrol deyi̇mleri̇

Similar to Java By Comparison (20)

PPTX
Karar kontrol deyi̇mleri̇
PDF
GDO'suz Yazılım Geliştirme Teknikleri
PDF
Visual Basic.NET Kodlama Standartları 1.0
PDF
Ti ks vb v1.0
PDF
Bilgisayar Mühendisliğinde Kariyer ve Çevik Yazılım
PDF
Eclipse ile Java Debug
PPTX
Clean Code
PDF
C# Tiks v1.0
PDF
Tiks cs v1.0
PDF
Kaya Gibi Sağlam Yazılım Projelerine İmza Atmanın 5 Prensibi
PPTX
Yazılım Kalitesi
PPTX
Part 1 A Pragmatic Philosophy
PDF
Nesne tabanlı programlama 4
PPTX
C#, Microsoft Yaz Okulu 2011 - İzmir
PPTX
Clean code & refactoring
PPTX
Clean Code & Refactoring
PPTX
Ders-3 (1)Ders-1Ders-1Ders-1Ders-1Ders-1Ders-1.pptx
PDF
Android'e Giriş Eğitimleri 1_2
PPTX
Yazılım mimarisi yazılım müh.
PPT
Yazılım geliştirme süreçleri2
Karar kontrol deyi̇mleri̇
GDO'suz Yazılım Geliştirme Teknikleri
Visual Basic.NET Kodlama Standartları 1.0
Ti ks vb v1.0
Bilgisayar Mühendisliğinde Kariyer ve Çevik Yazılım
Eclipse ile Java Debug
Clean Code
C# Tiks v1.0
Tiks cs v1.0
Kaya Gibi Sağlam Yazılım Projelerine İmza Atmanın 5 Prensibi
Yazılım Kalitesi
Part 1 A Pragmatic Philosophy
Nesne tabanlı programlama 4
C#, Microsoft Yaz Okulu 2011 - İzmir
Clean code & refactoring
Clean Code & Refactoring
Ders-3 (1)Ders-1Ders-1Ders-1Ders-1Ders-1Ders-1.pptx
Android'e Giriş Eğitimleri 1_2
Yazılım mimarisi yazılım müh.
Yazılım geliştirme süreçleri2
Ad

More from İbrahim Kürce (13)

PPTX
Bir Alim - Fuat Sezgin
PPTX
The Go Programing Language 1
PPTX
Effective Java - Madde 2: Birçok parametreli yapılandırıcıyla karşılaşırsan k...
PPTX
Effective Java - Madde 1: Yapılandırıcılar yerine statik fabrika(factory) met...
PPTX
Effective Java - Chapter 4: Classes and Interfaces
PPTX
Effective Java - Chapter 3: Methods Common to All Objects
PPTX
OCA Java SE 8 Exam Chapter 6 Exceptions
PPTX
OCA Java SE 8 Exam Chapter 5 Class Design
PPTX
Effective Java - Chapter 2: Creating and Destroying Objects
PPTX
OCA Java SE 8 Exam Chapter 4 Methods Encapsulation
PPTX
OCA Java SE 8 Exam Chapter 3 Core Java APIs
PPTX
OCA Java SE 8 Exam Chapter 2 Operators & Statements
PPTX
OCA Java SE 8 Exam Chapter 1 Java Building Blocks
Bir Alim - Fuat Sezgin
The Go Programing Language 1
Effective Java - Madde 2: Birçok parametreli yapılandırıcıyla karşılaşırsan k...
Effective Java - Madde 1: Yapılandırıcılar yerine statik fabrika(factory) met...
Effective Java - Chapter 4: Classes and Interfaces
Effective Java - Chapter 3: Methods Common to All Objects
OCA Java SE 8 Exam Chapter 6 Exceptions
OCA Java SE 8 Exam Chapter 5 Class Design
Effective Java - Chapter 2: Creating and Destroying Objects
OCA Java SE 8 Exam Chapter 4 Methods Encapsulation
OCA Java SE 8 Exam Chapter 3 Core Java APIs
OCA Java SE 8 Exam Chapter 2 Operators & Statements
OCA Java SE 8 Exam Chapter 1 Java Building Blocks
Ad

Java By Comparison

  • 1. JAVA BY COMPARISON SIMON HARRER, J.LENHARD, LINUS DIETZ HAZIRLAYAN İBRAHIM KÜRCE
  • 3. 1-İLKEL(PRİMİTİF) BOOLEAN KARŞILAŞTIRMA • İlkel boolean değerleri karşılaştırmalarda kullanmamak gerek • Kodda bulunan gürültülerdir • Anti-pattern’dir • Okumayı zorlaştırır
  • 6. 2-OLUMSUZLUKTAN KAÇININ • Her zaman pozitif olun. Çünkü anlaması daha kolaydır • !(değil) işaretini mümkün olduğunca kullanmayın
  • 8. 2.OLUMSUZLUKTAN KAÇININ • isInorganic() yerine isOrganic() kullandık. If ve else yerleri değişti • Pozitif anlam oluşturduk • !(Değil) ifadesini kaldırdık. If ve else yerleri değişti • Az bir iş gibi görülebilir, proje büyüdükçe çok büyük farklar oluşturur
  • 10. 3.BOOLEAN İFADELERİ DİREK DÖNÜN • Gereksiz if ifadelerini temizleyin • Daha fazla karmaşa oluşturur
  • 12. 3.BOOLEAN İFADELERİ DİREK DÖNÜN • Daha az kod satırı • Daha az hizalama ve daha az iç-içe ifadeler • De Morgan Kanunu’nu kullanabiliriz, • !A && !B == !(A || B) // true • !A || !B == !(A && B) // true
  • 13. 3.BOOLEAN İFADELERİ DİREK DÖNÜN • Hatta alt parçalara bölebiliriz,
  • 15. 4.BOOLEAN İFADELERİ BASİTLEŞTİRİN • Çoklu ifadelerin anlaşılması ve değiştirilmesi zordur
  • 17. 4.BOOLEAN İFADELERİ BASİTLEŞTİRİN • Gerekirse ekstra metodlar ekleyin • Metodların anlamlı-güzel isimleri olsun, içeriğine bakma gereği duymayalım
  • 19. 5.KOŞULLU IFADELERDE NULL HATASINA DIKKAT EDIN • NullPointerException en çok gördüğümüz hatalardan • İfadelerin sırasına dikkat edin
  • 21. 5.KOŞULLU IFADELERDE NULL HATASINA DIKKAT EDIN • message ve location değişkenleri null kontrolü eklendi • İfade sırasında null kontrolü ilk sıraya alındı • Java ve diğer dillerde artık Optional(?) ile null pointer hatası azaltılmaya çalışılıyor
  • 23. 6.SWITCH AKIŞINA DİKKAT EDİN • Switch ifadesi Java gibi bazı dillerde önceden beri kötü şöhrete sahiptir • break kullanımına dikkat etmek gerekir
  • 25. 6.SWITCH AKIŞINA DİKKAT EDİN • Her case sonuna mutlaka break koyun • Bazı durumlarda switch yerine if kullanmak ve ayrı bloklarda kodları yönetmek doğru olur • Burada yetkili ve yetkisiz kullanıcılar aynı yerde yönetiliyor
  • 27. 7.HER ZAMAN SÜSLÜ PARANTEZ{} KULLANIN • Hizalama bazen yanıltıcı olabilir • Hatayı ararken saatleriniz heba olmasın
  • 29. 7.HER ZAMAN SÜSLÜ PARANTEZ{} KULLANIN • Derleyici süslü parantezler eklenmiş gibi kodu yorumlar. Bu da istenmeyen bir duruma yol açar • Her zaman daha az kod daha iyi demek değildir • 2014 yılında Apple geliştiricisi iOS üzerinde SSL/TLS çalışırken bu hatayı yaptı ve bu yüzden sistemlere saldırılar oldu • Her zaman süslü parantez eklemek gerekir
  • 31. 8.KOD SIMETRISINI SAĞLAYIN • Bütün koşullar ardı sıra devam ediyor • Biraz daha büyüyünce bulmaca gibi olur, karmaşıklaşır • Bütün koşullu ifadeler benzer bir amaca mı yönelik? • Kod simetrisi yok
  • 33. 8.KOD SIMETRISINI SAĞLAYIN • Yetkili ve yetkisiz kodu ayırmış olduk • İkinci kısım simetri olmuş oldu
  • 35. 9.SIHIRLI(MAGIC) SAYILARDAN KURTULUN • Sihirli sayı: Kod içinde bulunan bakınca anlaşılmayan, rastgele sayılar • Hataya yol açarlar
  • 37. 9.SIHIRLI(MAGIC) SAYILARDAN KURTULUN • Anlaşılır ve erişebilir değişkenler tanımlayın ve onları kullanın • Kimse bu sayı(veya string) nedir diye düşünmek zorunda kalmaz
  • 39. 10.SABIT DEĞIŞKENLER YERINE ENUM TERCIH EDIN • Sabit değişkenler çok artarsa takip edilmesi zorlaşır • İstenilen durumlar için ayrıca farklı değerler atanma olasılığı var • Bu seferde metod ekstra kontroller yapması gerekiyor
  • 41. 10.SABIT DEĞIŞKENLER YERINE ENUM TERCIH EDIN • Enum bize ekstra güvenlik sağladı • Fazladan kontrollere gerek kalmadı • Derleme zamanında kontrollerin önüne geçmiş olduk • İf-else bloklarından bile kurtulduk
  • 43. 11.KLASİK FOR YERİNE FOR-EACH KULLANIN • Yeniliklere açık olun • Index için kullanılan i değişken değeri değişebilir ve hata alınabilir
  • 45. 11.KLASİK FOR YERİNE FOR-EACH KULLANIN • Konuşma diline daha yakın, for each check in checks… • Index değişkeninden ve hata alma ihtimalinden kurtulduk • Eski yönteme çok az ihtiyaç duymalısın
  • 47. 12.DÖNGÜ SIRASINDA DEĞIŞIKLIK YAPMA • Uygulamanın çakılmasına yol açabilir • ConcurrentModificationException hatası üretir
  • 49. 12.DÖNGÜ SIRASINDA DEĞIŞIKLIK YAPMA • Iterator liste üzerinde elemanlara işaretçi gibi çalışır • Liste üzerinde güncelleme işlemleri için tasarlanmıştır • hasNext ile garantiye almış oluruz
  • 50. SON