Como posso escrever funções reutilizáveis sem sacrificar o desempenho? Estou enfrentando repetidamente a situação em que quero escrever uma função de uma maneira que a reutilize (por exemplo, não faz suposições sobre o ambiente de dados), mas sabendo o fluxo geral do programa, sei que não é a mais eficaz método. Por exemplo, se eu quiser escrever uma função que valide um código de ações, mas seja reutilizável, não posso simplesmente assumir que o conjunto de registros está aberto. No entanto, se eu abrir e fechar o conjunto de registros sempre que a função for chamada, o desempenho atingido ao percorrer milhares de linhas poderá ser enorme.
Portanto, para o desempenho, posso ter:
Function IsValidStockRef(strStockRef, rstStockRecords)
rstStockRecords.Find ("stockref='" & strStockRef & "'")
IsValidStockRef = Not rstStockRecords.EOF
End Function
Mas, para reutilização, eu precisaria de algo como o seguinte:
Function IsValidStockRef(strStockRef)
Dim rstStockRecords As ADODB.Recordset
Set rstStockRecords = New ADODB.Recordset
rstStockRecords.Open strTable, gconnADO
rstStockRecords.Find ("stockref='" & strStockRef & "'")
IsValidStockRef = Not rstStockRecords.EOF
rstStockRecords.Close
Set rstStockRecords = Nothing
End Function
Estou preocupado que o impacto no desempenho de abrir e fechar esse conjunto de registros quando chamado de dentro de um loop em milhares de linhas / registros seja severo, mas o uso do primeiro método torne a função menos reutilizável.
O que devo fazer?