얼마나 많은 정보 숨기기가 필요합니까?코드 리팩토링을 수행 할 때 정보 숨기기가 얼마나 필요합니까?
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 (...)"
포함, 코드 생성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]
}
() 확장 메서드 (안 유일한 이유 좋네요했다).
하지만 심각 이것은 내가 코드를 리팩토링하는 구상 어떻게 내가 더 간결 코드를 원, 보일러 플레이트 코드를 리팩토링 생각하고
startscalar 코드와 상용구 코드가 확장 메서드 안에 들어가기를 바랬다.
위 코드의 경우 코드 리팩터링/정보 숨김이 필요합니까? 리팩터링 된 작업이 너무 불투명 해 보입니까?
VerifyDeletion은 (적어도 내 코드의 경우에는) 잘 정의 된 기능이므로이 메소드를 확장 메소드 – Hao