需要隐藏多少信息?在删除记录之前,我有样板代码,如下所示:
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 = new NpgsqlCommand(...)”
但我正在认真考虑重构样板代码,我想要一个更简洁的代码。这就是我设想重构代码的方式(使用扩展方法变得更好(不是唯一的原因;))
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]
}
我希望执行标量和样板代码进入扩展方法。
对于我上面的代码,它是否需要代码重构/信息隐藏?我的重构操作看起来太不透明了吗?