【发布时间】:2011-06-07 18:33:51
【问题描述】:
我目前正在阅读Effective Perl Programming(第二版)。我遇到了一段被描述为写得很糟糕的代码,但我还不明白它有什么不好的地方,或者应该如何改进它。如果有人能向我解释这件事,那就太好了。
这是有问题的代码:
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 对象来代替真实的东西。
到目前为止,我可能还没有理解这本书试图教给我的很多内容,或者我跳过了与理解上述代码的不良做法相关的部分......好吧,提前感谢您的帮助!
【问题讨论】:
-
+1 我也想听听这个答案。我似乎无法在这里找出任何“可怜”的东西......
-
到目前为止给出的所有答案都很好地解释了这个问题,所以感谢大家的快速回复!我确实是瞎了眼……
标签: perl unit-testing coding-style dbi