经验法则:如果某个函数包含执行某些功能的代码块,而这些代码块与其余代码有些脱节,则将其放在单独的函数中。例:
function build_address_list_for_zip($zip) {
$query = "SELECT * FROM ADDRESS WHERE zip = $zip";
$results = perform_query($query);
$addresses = array();
while ($address = fetch_query_result($results)) {
$addresses[] = $address;
}
// now create a nice looking list of
// addresses for the user
return $html_content;
}
好得多:
function fetch_addresses_for_zip($zip) {
$query = "SELECT * FROM ADDRESS WHERE zip = $zip";
$results = perform_query($query);
$addresses = array();
while ($address = fetch_query_result($results)) {
$addresses[] = $address;
}
return $addresses;
}
function build_address_list_for_zip($zip) {
$addresses = fetch_addresses_for_zip($zip);
// now create a nice looking list of
// addresses for the user
return $html_content;
}
这种方法有两个优点:
每当您需要获取某个邮政编码的地址时,都可以使用随时可用的功能。
当您再次需要阅读该函数build_address_list_for_zip()
时,您就会知道第一个代码块将要执行的工作(它获取某个邮政编码的地址,至少那是您可以从函数名称中获得的地址)。如果您要保留查询代码的内联,则首先需要分析该代码。
[另一方面(即使遭受酷刑,我也拒绝告诉我这一点:如果您读过很多有关PHP优化的文章,您可能会想到将函数的数量保持尽可能小,因为函数调用非常多,在PHP中非常昂贵。我不知道这件事,因为我从未做过任何基准测试。如果是这样的话,如果您的应用程序对性能非常敏感,那么最好不遵循任何问题的答案;