Мое настоящее соглашение с контрактом находится в большой компании электронной коммерции. Их база кода, которая имеет свое происхождение, восходящая к .Net 1.0, застала меня врасплох, чтобы содержать много проблем, которые повышают уровень запаха за последнее дерьмо, которое я взял.Важность закрытия объектов SQLConnection при использовании объекта SQLDataReader
Несмотря на то, что, несмотря на это, и пытаюсь рассеять мой уровень отвлечения от него, я продолжаю весело пытаться добавить функции, чтобы либо исправить другие проблемы, либо расширить количество дерьма. Когда я коснусь 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, из-за которого происходит перебор кишечника? По крайней мере, вы обычно не обертываете это в try/catch/finally, о котором большинство из нас знает, начиная с .Net v1.0? Еще лучше было бы нецелесообразно исправлять с помощью утверждений? Закрывает ли SQLDataReader фактическое инкапсулирование соединения автоматически?
Спасибо, Джоэл! Особенно в общем списке точки Т! – JohnL 2008-11-13 13:46:17