Pazartesi, Mayıs 19, 2008

Asla String kullanmayin

Stephan Schmidt Never, never, never use String in Java (or at least less often :-) makalesinde, String gibi primitifleri kullanmak yerine alternatif bir çözüm öneriyor. Yaklaşımının temelinde DDD (domain driven design) yani alan temelli tasarım yatıyor. Temel fikir şu: Alana (veya domain/business) ait kavramların nesnelerle temsil edilmesi, en küçük alan kavramından başlamalı. Bir kişinin ismi dahi kendi adına bir nesne olmalı.


public void bookTicket(
String name,
String firstName,
String film,
int count,
String cinema);


yeni yol:


public void bookTicket(
Name name,
FirstName firstName,
Film film,
Count count,
Cinema cinema);


faydaları:
çok uzun parametre listesi alan metotlar kendi kendini dokümente ederler
iş mantığının yönetimi daha kolay olur


new Name("ahmet")
şeklinde yazmak işi zorlaştırmaz mı?
çözüm:

public static Name name(String name) {
return new Name(name);
}


böylece:

new Customer(firstName("Stephan"), name("Schmidt"));


eski yol:

new Customer("Stephan", "Schmidt");


başka örnek:

new Point(10,10);

yeni yol:

new Point(x(10), y(10));

XPos ve YPos objeleri kullanılıyor

örnek:
fiyatla arama yapmak:
searchByPrice
bu metodun argümanları nasıl olmalı?

kötü yol:

Vector searchByPrice(double start, double end)


iyi:

List searchByPriceRange(Price start, Price end)


veya

List searchByPriceRange(PriceRange priceToSearch)



---
Tartışma:

İtirazlar:
1. YAGNI ilkesi ihlal edilmiş olmuyor mu?

Cevaplar:
Oliver:
http://stephan.reposita.org/archives/2008/05/02/never-never-never-use-string-in-java-or-at-least-less-often/#comment-87153
But we actually had a problem with the last names on the project I am currently on. The business wanted to limit the last name length to minimum 2 characters, and of course, the code was littered with length checking, from the ui level to the database.

A couple of months later, they dropped that requirement, and it took us ages to find all the checking throughout the code and remove it.

The original blog post argued that domain modeling needs to occur at the lowest possible level. At some point, every project, starts introducing domain model.

Yazının Devamı...

Perşembe, Mayıs 15, 2008

Uykuya dalis

Web günceme daha önce yazmadım. O yüzden şimdi duyurayım: 5 hafta kadar önce (7 Nisanda) çocuğumuz doğdu. Adını Özgür Emin koyduk, fakat hala nüfusta kaydını yaptırmadık. Aslında bu web sayfasını daha çok teknik konularla ilgili doldurmak istiyordum. Kişisel anılarımı başka bir yere koysam belki daha uygun olur diye düşünüyordum, fakat ne yapacağıma dair tam da bir karara varamadım.

Yazının Devamı...

Cumartesi, Mayıs 03, 2008

qipit ile doküman taramak

Qipit.com adlı bir site var. Dokümanları kolayca okunabilir bir şekilde taramak için çok yararlı bir uygulama. Cep telefonunuzla veya dijital fotoğraf makinenizle çektiğiniz resimleri qipit'e yüklüyorsunuz. Normalde çektiğiniz resimlerde, çok sayıda karanlık alan oluyor. Qipit size otomatik olarak, doküman resimlerinin temiz bir şekilde düzenlenmiş halini geri gönderiyor.