Actualmente estoy leyendo Effective Perl Programming (2da edición). He encontrado un fragmento de código que se describió como mal escrito, pero todavía no entiendo qué tiene de malo ni cómo debería mejorarse. Sería genial si alguien pudiera explicarme el asunto.¿Qué hay de malo en acceder a DBI directamente?
Aquí está el código en cuestión:
sub sum_values_per_key {
my ($class, $dsn, $user, $password, $parameters) = @_;
my %results;
my $dbh =
DBI->connect($dsn, $user, $password, $parameters);
my $sth = $dbh->prepare(
'select key, calculate(value) from my_table');
$sth->execute();
# ... fill %results ...
$sth->finish();
$dbh->disconnect();
return \%results;
}
El ejemplo viene del capítulo de probar su código (p 324/325.). La frase que me ha dejado pensando en cómo mejorar el código es el siguiente:
Dado que el código fue mal escrito y accede directamente DBI, que tendrá que crear un objeto DBI falsa para sustituir a la verdadera cosa.
Probablemente no he entendido mucho de lo que el libro hasta ahora ha estado tratando de enseñarme, o me salté la sección relevante para entender qué es una mala práctica sobre el código anterior ... Bueno, gracias de antemano ¡para su ayuda!
+1 Me gustaría escuchar esa respuesta, también. Parece que no puedo distinguir nada "malo" aquí ... –
Todas las respuestas dadas hasta ahora han explicado el asunto muy bien, ¡así que gracias a todos por sus rápidas respuestas! De hecho, he sido bastante ciego ... – canavanin