PHP 模型:数据库操作的一个或多个设置器?
PHP models : one or more setters by database action?
我在 CodeIgniter PHP 项目中使用 MVC 模式,我想知道构建模型方法以确保代码的可读性和可扩展性的最佳方法是什么。
简而言之,这样做更好吗? :
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
}
或者换一种方式?
另外,在这种情况下,函数命名有什么好的做法吗?
function set_account_state($state)
当您只有一项任务,即更改状态时,这会更好。
但是,如果将来您可能必须在更改帐户状态之前执行不同的任务,那么您需要三种不同的方法。
您仍然可以使用原来的方法来更改帐户状态并从您的三个方法中调用它。
函数命名应包括一个带名词的动词,以使其更清晰。
function pending_account() 不是很清楚,function keep_account_pending() 是我觉得更好的命名方式。
在我看来,第二种方式更好。
使用表明该方法将做什么的名称可以提高代码的可读性。
随着您的代码变得越来越大,很容易忘记什么数字代表什么状态。名称不会发生这种情况,因为名为 reject_account()
的方法将表明该帐户将被拒绝,而不是将数字作为参数传递给函数。
此外,当其他人处理您的代码时,他们将更容易理解调用方法时发生了什么。话虽如此,当一个人看到一种叫做 accept_account()
的方法时,最好理解客户帐户被接受,然后当一个人看到 set_account_state(1)
.
时
我在 CodeIgniter PHP 项目中使用 MVC 模式,我想知道构建模型方法以确保代码的可读性和可扩展性的最佳方法是什么。
简而言之,这样做更好吗? :
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
}
或者换一种方式?
另外,在这种情况下,函数命名有什么好的做法吗?
function set_account_state($state)
当您只有一项任务,即更改状态时,这会更好。 但是,如果将来您可能必须在更改帐户状态之前执行不同的任务,那么您需要三种不同的方法。 您仍然可以使用原来的方法来更改帐户状态并从您的三个方法中调用它。
函数命名应包括一个带名词的动词,以使其更清晰。 function pending_account() 不是很清楚,function keep_account_pending() 是我觉得更好的命名方式。
在我看来,第二种方式更好。
使用表明该方法将做什么的名称可以提高代码的可读性。
随着您的代码变得越来越大,很容易忘记什么数字代表什么状态。名称不会发生这种情况,因为名为 reject_account()
的方法将表明该帐户将被拒绝,而不是将数字作为参数传递给函数。
此外,当其他人处理您的代码时,他们将更容易理解调用方法时发生了什么。话虽如此,当一个人看到一种叫做 accept_account()
的方法时,最好理解客户帐户被接受,然后当一个人看到 set_account_state(1)
.