obenplus.com | oben+ | Hikayesi bol bir yazılımcının kaleminden, teknoloji dünyasını en önemli ve en ince ayrıntısına kadar takip etmek, bir yazılımcının hayatını, yaşantısını gözlemlemek isteneyenler için...

Archive for Haziran, 2015

CNN Türk Ekonomi Direktörü, Emin Çapa’nın bu sunumunu izlediğimde, 20 dakikada bir root cause analiz bu kadar güzel yapılabilir diye düşündüm. Herkes mutlaka izlemeli.

 


Geçenlerde bir library ile karşılaştım. Adı jcabi-aspectj.

Maven repository ise burada.

Adamın biri gitmiş, bir takım anotasyonlar yazmış, gayet de güzel yazmış. Mesela neler var ?

  • Cacheable : Eğer bir metodunuzu @Cachable (lifetime=5) anotasyonu ile işaretlerseniz, metodunuzun döndüğü response 5 saniye boyunca cachelenecektir.
  • Parallel : Eğer Runnable dan türeyen bir sınıfınız varsa, ve run metodunu paralel thread ile koşmak istiyorsanız, methodu @Parallel(threads=15) anotasyonu ile işaretlerseniz run metodunuz 15 thread ile koşacaktır.
  • RetryOnFailure : Eğer metodunuzun exception aldığı caselerde yeniden denenmesini istiyorsanız  @RetryOnFailure(attempts = 2, delay = 10, verbose = false) şeklinde işaretlerseniz, metod exception aldığında 2 kere 10 ar saniye gecikme ile çağrılacaktır. Bu anotasyon özellikle, webden data çekerken faydalı olabilir.
  • Timeable : Timeable anotasyonu sayesinde methodunuzun maximum execute time ını set edebilirsiniz.

Hiç bir zaman anlam veremediğim bir kod bloğu aşağıdaki;

Aslında neden böyle düşündüğümü ifade edebilmek için baya zorlanacaktım ama grafiksel bir şekilde derdimi nasıl anlatabileceğimi buldum 🙂

Yukarıdaki kodu bilgisayar açısından düşünelim. CPU gelecek, önce sola gidecek, orada birşeyi kontrol edecek, eğer orası uygun değilse, geri dönecek ve sağ tarafı kontrol edecek, orada bir sorun yoksa yoluna devam edecek.

Yani aşağıdaki resim herşeyi açıklıyor. Yukarıdaki kod bence aynen aşağıdaki resime benziyor.

if-then-throw-1

 

Gerçek dünya için düşünecek olursak, ne kadar da mantıksız değil mi ? Görünürde oldukça logical, pratikte kodsal olarak logic olarak bir hatası da yok. Ama düşününce saçma olduğu anlaşılıyor.

Yani ben eğer sol tarafa girdiğimde tır sürüyorsam tamam, sürmüyorsam geri dönmem ve öbür yönden gitmem gerekecekse, neden tırdan sonraki yönü çizeyim ki ?

Bu nedenle doğru çizim aşağıdaki gibi olmalı;

if-then-throw-3

 

Yani kod aşağıdaki gibi olmalı;

Özetle eğer bir if else blogu yazmayı düşünüyorsak ve ölümcül sondan sonra başka bir yol yoksa, o zaman kodumuzu da ona göre yazmalıyız, çünkü ölümcül sondan sonra yol yok ise, varsayalım ki yol olsaydı şöyle olurdu gibi bir kod yazmak bence pek şık durmuyor. Tabiki bazılarınız bunu bir yoğurt yiyiş olarak görebilirler fakat, belki de bazı noktalarda hemfikir olabilmemizde fayda vardır ? Olabilir mi sizce de ? 🙂

Oben