Сколько информации необходимо скрыть? У меня есть стандартный код перед удалением записи, она выглядит так:
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...
}
ПРИМЕЧАНИЕ: стандартный код генерируется кодом, включая «using (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]
}
Я хотел, чтобы исполняемый код и шаблонный код входили в метод расширения.
Для моего кода выше требуется ли рефакторинг кода / скрытие информации? Моя операция рефакторинга выглядит слишком непрозрачной?