0

私が取り組んでいる MVC プロジェクトのモデルを開発しています。1 つのタスクに複数の関数を用意する方がよいのか、それとも処理できる方法ごとに 1 つの関数を用意する方がよいのか疑問に思っていました。たとえば、次のようなものを用意した方がよいでしょうか。

public function get($identifiers = null, $limit = null, $offset = null)
{
    if ($identifiers != null) {
        if (is_array($identifiers)) {
            $this->db->where($identifiers);
        } else {
            $this->db->where($this->_key, $identifiers);
            $method = 'row'.($this->_return_array ? '_array' : '');
            return $this->db->get($this->_table)->$method();
        }
    }

    if ($limit != null) {
        $this->db->limit($limit, $offset || null);
    }

    if (!count($this->db->ar_orderby)) {
        $this->db->order_by($this->_order);
    }

    $method = 'result'.($this->_return_array ? '_array' : '');
    return $this->db->get($this->_table)->$method();
}

複数のケースを処理するか、次のような個別の機能を持つ

get($id) {}
get_where($where) {}
get_all() {}

等々。

4

2 に答える 2

1

個別の機能は、多くのことを実行しようとする 1 つの機能よりもはるかに厳密に単一責任の原則に従います。これは、理解、デバッグ、変更、およびテストが容易な、より小さな関数を使用できることを意味します。ほとんどの場合、1 つのモノリシックな機能よりも、複数の特定の機能を使用したほうがよいでしょう。

于 2013-03-27T21:35:52.550 に答える
0

それらの関数内で何が起こっているかによって異なります。ビジネス ロジックのほとんどが同じで、入力パラメーターだけが異なる場合 (たとえば、異なる引数を準備する必要がありますが、その後のロジックは同じです)、単一の関数を使用します。それ以外の場合は、複数の小さな関数を実行します。より保守しやすく、そこで何が起こっているのかを理解しやすくなります。

于 2013-03-27T21:38:39.840 に答える