Thursday, March 25, 2010

Domain challange

Pagi nie aku dapat artikel update dari Jimmy Bogard tentang
Strengthening your domain: Encapsulating operations

Aku dah baca dan beri comment, guna nick amir (hentam ajelah). Memang menarik cara dia describe problem and cara dia solve dengan cara DDD. Aku cuma tak berapa setuju beberapa domain behavior yang dia design..so aku bagi suggestion aku.. Solution yang dia I bagseperti di bawah.

Customer = new Customer
var fee = customer.ChargeFee(100m);
fee.Amount.ShouldEqual(100m);
customer.Fees.ShouldContain(fee);


Solution aku lak dengan ialah method ChargeFee tu naming dia macam tak kena.
Aku suggest buat macam nie:

Customer customer = new Customer();
ShopOwner s = new ShopOwner();
s.ChargeFeeTo(customer).Amount(100m);
So bila customer tu nak buat bayar


customer.MadePayment(50m);
Dia ada komen balik kata ChargeFeeTo(customer) tidak berapa kena sebab tanpa panggil method Amount(), code boleh compile dan tiada error. Aku setuju konsep explicit design, insyAllah aku akan ulas explicit design (keberkesanan).
Aku suggest supaya amount tu diletakkan sebagai paramater seperti

s.ChargeFeeTo(customer,100m);

Selain dari itu untuk domain yang lebih flexible kita boleh bina domain CustomerFeeCharges (moment interval) so code boleh dibina macam ini

s.ChargeForTo(new CustomerFeeCharges(customer,amount));

0 comments: