我应该实现多功能功能吗?

时间:2009-09-02 01:48:46

标签: php codeigniter

我正在使用CodeIgniter,我得到了一个模型,可以让我们说出所有可以设置偏移量和限制的食谱。我应该扩展该功能以检索单个食谱吗?这是好的做法吗?

3 个答案:

答案 0 :(得分:2)

您的目标应该是最大限度地减少代码重复,同时最大限度地提高可理解性。这两者经常不一致。您最终可以使用最少的代码重复,但有一个函数有12个可选参数。所以一些一般提示:

  • 考虑将常用功能打包到第三个功能中,然后这两个功能可以根据需要调用它;
  • 如果函数的参数超过3-4个,则使用参数的对象或数组;
  • 最小化代码重复并未完全消除。有时,最清晰的解决方案涉及一定数量的代码重复;
  • 功能或对象的目的应该是清楚的。如果它根据参数完全改变了,那么你可能会混淆人们。

根据您的具体情况,我想您最终会想要:

function get_recipes($offset, $limit) {
  // execute query and get resource
  $ret = array();
  while ($row = mysql_fetch_assoc($rs)) {
    $ret[] = build_recipe($row);
  }
  return $ret;
}

function get_recipe($id) {
  // execute query and get row object
  return build_recipe($row);
}

function build_recipe($row) {
  // construct a recipe object from the row
}

答案 1 :(得分:1)

通常,为了清楚起见,函数应该执行单个任务。但是,“获得N行”是一项任务 - 即使N == 1;所以我认为这个案例是合格的,即函数不是真正的“多用途”! - )

答案 2 :(得分:-1)

答案很简单。

请记住Worse is better