我目前的合同约定是在一家大型电子商务公司工作。他们的代码库起源于 .Net 1.0,令我惊讶的是,其中包含的许多问题超出了我上次的废话水平。
尽管如此,并试图分散我对它的干扰程度,我还是很高兴地尝试添加功能来解决其他问题或扩展更多废话。在我触摸 DAL/BLL 的地方,修复上述问题所需的时间就会完成。但是,我想从专家那里获得信任票,以确保不会浪费客户的时间,或者更糟的是,我的可信度会因触摸“有效的东西”而被否决。当然,单元测试会解决或至少减轻这种担忧。也许这也应该添加到 wtf.com?
Public Function GetSizeInfoBySite(ByVal siteID As String) As IList
Dim strSQL As String = "YES INLINE SQL!! :)"
Dim ci As CrapInfo
Dim alAnArrayList As ArrayList
Dim cn As New SqlConnection(ConfigurationSettings.AppSettings("ConnectionString"))
Dim cmd As New SqlCommand(strSQL, cn)
cmd.Parameters.Add(New SqlParameter("@MySiteID", SqlDbType.NVarChar, 2)).Value = siteID
cn.Open()
Dim rs As SqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
While rs.Read()
ci = New CategoryInfo(rs("someID"), rs("someName"))
If IsNothing(alAnArrayList) Then
alAnArrayList = New ArrayList
End If
alAnArrayList.Add(ci)
End While
rs.Close()
Return CType(alAnArrayList, IList)
End Function
除了让我的直觉搅动的内联 SQL 之外,还有人看到这个问题吗?至少您通常不会将上述内容包装在我们大多数人都知道自 .Net v1.0 以来一直存在的 try/catch/finally 中?更好的是用 Using 语句修复不是明智的吗?SQLDataReader close 是否真的封装了自动关闭的连接?