Berkant KARDUMAN

Teknoloji günlüğü

Clean Code

Clean Code

Uncle Bob tarafından yazılmış CleanCode adında harika bir kitap var. Herkesin okumasını tavsiye ederim.
Kitapta en çok ilgimi çeken konuları derlemeye çalışacağım.

Clean Code Nedir?

Clean code tanımı her bir programcı tarafından farklı yapılabilir. Ancak temiz kodun bazı ortak özellikleri vardır.
  • Bakımı kolay
  • Basit ve Doğrudan
  • Okunabilir
  • Özenilerek Yazılmış
  • Tekrarlama İçermeyen(Code Clones)
  • Güzel İsimlendirilmiş.

Anlamlı İsimler

İsimlendirme dünyadaki en önemli işlerden biridir. Programcılarda değişkenlere, sınıflara, argümanlara, methotlara,Dosyalar ve dizinlere anlamlı isimler vermek zorundadır. 

Dikkat edilebilecek bazı isimlendirme kuralları

  • Anlamlı İsimler Kullanılmalı
  • Yanlış bilgilendirmeden kaçınılmalı
  • İsimler anlamlı olarak ayrıştırıcı olmalı
  • İsimler telafuz edilebilir olmalı
  • İsimler Aranabilir Olmalı
  • Neslerin tipine göre isimlendirilmesinden kaçınılmalıdır.
  • Methot isimleri fiilerden oluşmalıdır.
  • Class isimleri fiill olmamalıdır

Değişkenlerin isimleri anlamlı olmalıdır. 

Değişken tanımı yaparken açıklama yazmaya gerek kalmamalıdır.  Örneğin 

int d; //elapsed time in days
Yerine daha açıklayıcı bir tanımlama seçilmesi gerekir. elapsedTimeInDays daha iyi bir değişken ismi olacaktır.
Özensizce isimlendirilmiş kodun anlalışmasıda zordur.
Örneğin aşağıdaki kodu incelediğimizde geliştiricinin amacını anlamakta zorlanır.

 public List getThem() { List list1 = new ArrayList(); for (int[] x : theList) if (x[0] == 4) list1.add(x); return list1; }

Bu metodla ilgili cevaplanması gereken bazı sorular vardır ama maalesef bu soruların cevaplarına kod içerisinden ulaşmak mümkün görünmemektedir.

Mesela
  • theList değişkeninde neler var?
  • item değişkeninin sıfırıncı elemanı neden önemli?
  • 4 değeri nedir?
  • Geri döndürülen liste ile ne yapacağız?
Aynı kodu doğru düzgün isimlendirdiğimizde tüm sorulara cevap veren bir kod elde edebliiriz.

 public List getFlaggedCells() { List flaggedCells = new ArrayList(); for (Cell cell : gameBoard) if (cell.isFlagged()) flaggedCells.add(cell); return flaggedCells; } 

Görüldüğü gibi kodun amacı ile ilgili tüm sorulara cevap alınabiliyor.

Hatalı Bilgilendirmelerden Kaçınılmalıdır

İsimlendirmede okuyucunun yanlış anlayabileceği terimlerden uzak durulmalıdır.

Fast Report Web Designer

Sonunda geliyor. FastReport 2015.1 sürümünde web designer eklemiş.


Henüz beta görünüyor. Ama şimdiden umut verici.


Detaylar için http://www.fast-report.com/tr/news/338/