Я сейчас читаю Эффективное программирование на Perl (2-е издание). Я наткнулся на фрагмент кода, который был описан как плохо написанный, но я еще не понимаю, что в нем такого плохого, или как это следует улучшить. Было бы здорово, если бы кто-нибудь мог объяснить мне этот вопрос.
Вот код, о котором идет речь:
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;
}
Пример взят из главы о тестировании вашего кода (стр. 324/325). Предложение, которое заставило меня задуматься о том, как улучшить код, выглядит следующим образом:
Поскольку код был плохо написан и обращается к DBI напрямую, вам придется создать поддельный объект DBI, чтобы заменить настоящий.
Я, вероятно, не понял многого из того, чему меня до сих пор пыталась научить книга, или я пропустил раздел, относящийся к пониманию того, что плохого в приведенном выше коде ... Что ж, заранее спасибо за вашу помощь!