次のようなデータ アクセス コードについてどう思いますか。
public void AddCusotmer(Cusotmer customer)
{
//save customer into database
...
// save payment type
SavePaymentType(customer);
//save other data
...
}
private void SavePaymentType(Customer customer)
{
if(customer.PaymentType is XXXPayment)
{
var payment = customer.PaymentType as XXXPayment;
//save payment to XXXPayments table in db
...
}
else if(customer.PaymentType is YYYPayment)
{
var payment = customer.PaymentType as XXXPayment;
//save payment to YYYPayments table in db
...
}
...
}
個人的には、このようなコード (「is」を使用して型を検出し、何をすべきかを決定する) はあまり気分が良くありませんが、作者の Robert Martin は、DAL だけなので問題ないと言っているので、OCP の少しの違反は許容できる。
あなたはどのように思いますか?