需要多少信息隱藏?我有樣板代碼我刪除記錄之前,它看起來像這樣:執行代碼重構時需要多少信息隱藏?
public override void OrderProcessing_Delete(Dictionary<string, object> pkColumns)
{
var c = Connect();
using (var cmd = new NpgsqlCommand("SELECT COUNT(*) FROM orders WHERE order_id = :_order_id", c)
{ Parameters = { {"_order_id", pkColumns["order_id"]} } })
{
var count = (long)cmd.ExecuteScalar();
// deletion's boilerplate code...
if (count == 0) throw new RecordNotFoundException();
else if (count > 1) throw new DatabaseStructureChangedException();
// ...boiler plate code
}
// deleting of table(s) goes here...
}
注:樣板代碼是代碼生成,包括「使用(VAR CMD =新NpgsqlCommand(......)」
但我認真考慮重構的鍋爐板代碼,我想更succint代碼這是我想象重構代碼。(用做擴展方法(不是唯一的理由更好;))
using (var cmd = new NpgsqlCommand("SELECT COUNT(*) FROM orders WHERE order_id = :_order_id", c)
{ Parameters = { {"_order_id", pkColumns["order_id"]} } })
{
cmd.VerifyDeletion(); // [EDIT: was ExecuteWithVerification before]
}
我希望executecalar和樣板代碼進入擴展方法。
對於我上面的代碼,它是否保證代碼重構/信息隱藏?我的重構操作看起來太不透明瞭嗎?
VerifyDeletion是定義良好的功能(至少在我的代碼的情況下),所以我同意你應該把這個擴展方法放在 – Hao 2009-10-09 08:25:55