感觉 Data Access Application Block(DAAB) 里也有可能写得不太好的地方

作者下载博客园代码,对其中Data/SqlServer.cs文件进行分析。发现部分代码存在重复,认为可进行重构,且重构后对后续代码无影响。此外,还觉得GetProcedureTokens方法也有优化空间,指出代码并非完美。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天下载了博客园的代码,里面有一个
Data/SqlServer.cs
我不清楚是不是 MS DAAB 里的原样文件。不过前面有声明如下:
// ===============================================================================
// Microsoft Data Access Application Block for .NET 3.0
//
// SqlServer.cs
//
// This file contains the implementations of the AdoHelper supporting SqlServer.

我阅读到下面一段代码:
// set up the command string.  We use sp_procuedure_params_rowset to get the parameters
if (database != null
{
    cmdText 
= string.Concat("[", database, "]..sp_procedure_params_rowset");
    
if (server != null ) 
    
{
        cmdText 
= string.Concat(server, ".", cmdText);
    }


    
// be careful of transactions
    if (trnSql != null ) 
    
{
        newCommand 
= new SqlCommand(cmdText, cmd.Connection, trnSql);
    }
 
    
else 
    
{
        newCommand 
= new SqlCommand(cmdText, cmd.Connection);
    }

}
 
else 
{
    
// be careful of transactions
    if (trnSql != null ) 
    
{
        newCommand 
= new SqlCommand("sp_procedure_params_rowset", cmd.Connection, trnSql);
    }
 
    
else 
    
{
        newCommand 
= new SqlCommand("sp_procedure_params_rowset", cmd.Connection);
    }

}

看上去写得比较重复。我觉得完全可以重构为:
// set up the command string.  We use sp_procuedure_params_rowset to get the parameters
if (database != null
{
    cmdText 
= string.Concat("[", database, "]..sp_procedure_params_rowset");
    
if (server != null ) 
    
{
        cmdText 
= string.Concat(server, ".", cmdText);
    }

}
 
else 
{
    cmdText 
= "sp_procedure_params_rowset";
}


// be careful of transactions
if (trnSql != null ) 
{
    newCommand 
= new SqlCommand(cmdText, cmd.Connection, trnSql);
}
 
else 
{
    newCommand 
= new SqlCommand(cmdText, cmd.Connection);
}

而且我向后看了,这个 cmdText 对象在这个大的方法里再也没有使用过,所以对后面不会有影响。

另外大致看了一下,感觉 GetProcedureTokens 这个方法也可以写得更好一些。

从这个看我觉得里面有一些代码也不像想象的那么完美。说的不对的地方请各位指正。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值