Что не так с прямым доступом к DBI?

Я сейчас читаю Эффективное программирование на 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, чтобы заменить настоящий.

Я, вероятно, не понял многого из того, чему меня до сих пор пыталась научить книга, или я пропустил раздел, относящийся к пониманию того, что плохого в приведенном выше коде ... Что ж, заранее спасибо за вашу помощь!

6
задан Aristotle Pagaltzis 12 January 2011 в 11:40
поделиться