PHP模型:由数据库操作的一个或多个setter?

时间:2016-04-21 17:36:09

标签: php codeigniter model-view-controller model naming

我在CodeIgniter PHP项目中使用MVC模式,我想知道构建模型方法的最佳方法是什么,以确保代码的可读性和可伸缩性。< / p>

简而言之,这样做会更好吗? :

public function set_account_state($new_state) {
    // UPDATE a database record state to $new_state [0, 1 or 2]
}

还是这个? :

public function reject_account() {
    // UPDATE a database record state to 0  
}

public function accept_account() {
    // UPDATE a database record state to 1
}

public function pending_account() {
    // UPDATE a database record state to 2
}

或许是另一种方式?
此外,在这种情况下是否有一个良好的功能命名实践?

2 个答案:

答案 0 :(得分:3)

function set_account_state($state) 

当您只有一个任务且更改状态时,这会更好。 但是,如果将来您可能必须在更改帐户状态之前执行不同的任务,那么您需要三种不同的方法。 您仍然可以使用该原始方法来更改帐户的状态,并通过三种方法调用它。

函数命名应该包含一个带有名词的动词,以使其更清晰。 函数pending_account()不是很清楚,函数keep_account_pending()是我觉得更好的命名方法。

答案 1 :(得分:2)

在我看来,第二种方式是更好的方式。

使用指示方法操作的名称可以提高代码的可读性。

随着您的代码越来越大,很容易忘记代表什么状态的数字。名称不会发生这种情况,因为名为reject_account()的方法将表明帐户将被拒绝,然后作为参数传递给函数。

当其他人处理您的代码时,他们将更容易理解调用方法时发生的事情。话虽如此,如果人们看到一个名为accept_account()的方法,然后当看到set_account_state(1)时,会理解客户帐户被接受会更好。