Monday, April 10, 2006

DBUnit de bir böcek

DBUnit ile bir data.xml' koyduğunuz verileri yüklerseniz ( FlatXmlDataSet kullanarak) dikkat edin. Veri dosyasındaki bir tablonun kayıtlarının ilk satırında olmayan bir koluna sonraki satırlarda bir değer verirseniz, onları null yapıyor. Yani;


<dataset>
<item id='1' />
<item id='2' name='first name' />
</dataset>

seklinde verirseniz 2.item'in name koluna null koyacaktir.

Doğrusu;

<dataset>
<item id='2' name='first name' />
<item id='1' />
</dataset>

olmalı.

Olmaması gereken bir hata. Hiç olmamış hiç.

Friday, February 17, 2006

Kabul Testleri

Yakinda...

Wednesday, July 28, 2004

Ben Kodun Güzelini Severim

Yazılımlarım "iç güzellik"lerini içerdikleri kodlar belirler. Kodlar, istenen işi yapıyorlarsa, anlaşılmaz, karmaşık, kırılgan ve hatalı olsalar bile yeterli mi? Kodların bakımı ve gelen isteklere ve doğan ihtiyaçlara göre değiştirilmesi durumunda ne olacak?

Kendi yazdığımız bir kodu bile bir süre sonra anlayamıyorsak ve "Ben ne yapmışım burada ya!" diyorsak, başkalarının anlamasını ve bakımını yapmasını nasıl bekleyebiliriz?

Bence, kodlar geliştiricilerin istedikleri gibi "at oynatarak" yazdıkları bir gün yazanın bile çözemeyeceği parçalar olmamalıdırlar. Yazılımın temeli olan kodu çok iyi ve sağlam yazılması gerekir. Yani "güzel" olması gerekir.

Peki, bir kod nasıl olmalı ki "güzel" diyebilelim. İşte birkaç madde:

1. Okunabilir olmalıdır

  • Fonksiyonlar/metodlar çok uzun olmamali
  • Parametre çok olmamalı. İnsan aklinda ancak 3-7 tane degişken tutabiliyor. Bundan fazla olunca artık bazı noktalari kaçırmaya başlıyoruz.
  • Degişken, parametre, method, fonksiyon, sınıf... vb gibi parçalar verilen isimler, içerik hakkında bilgi vermeli.

2. Değiştirmeye ve geliştirmeye açık olmalıdır.

3. Belli bir kavram ustune odaklanmali yani sadece bir iş yapmalı ve bunu iyi yapmalıdır.

4. Mümkün olduğunca basit olmalıdır.

5. Hata içermemelidir.

6. Test edilebilir olmalıdır.

Kodu "güzel"leştirme teknikleri ve kodu "çirkin"leştiren "kötü kokular" için Refactoring 'e bakılabilir.

http://www.refactoring.com/catalog/

Kitap : http://martinfowler.com/books.html#refactoring