背景披露:我从事PHP项目已经有一段时间了,但直到最近才开始认真地查找最佳实践、面向对象设计模式、新PHP版本特性等等。
我的很多代码最终看起来像这样:
public function($arg1 = 'default', $arg2 = false)
{
if(!empty($arg2) && $arg1 != 'default) {
// do something here
}
}
我在github和whatnot中看到的几乎所有正确的OOP代码都不会检查所使用的参数的存在或正确类型。
我的问题是:总是对参数进行冗余检查,还是只在可能发生坏事情的特定情况下才进行冗余检查,这被认为是一种好做法?
例如,在运行一个SQL查询并获取结果后,我总是这样做if(!empty($results)) //go do stuff
我应该这样做吗?是我多疑了吗?
对于类,您可以通过typehint更容易地检查参数
public function doSomething(My'Super'Cl $cl, array $params){
...
}
有时可以通过func_num_args
我同意这是好做法,我的意思是,这叫做合同设计
最好预先定义函数应该做什么,并做适当的异常处理。
示例-如果我正在编写一个应用程序,它使用了我的库,那么要么应用程序应该做一些检查,要么库应该做一些检查。
我通常选择在应用程序中做适当的检查,这样我就可以正确地通知用户。这也消除了在库中进行操作的负担,使其使用起来更加灵活。
但是如果你选择这样做,你应该确保以类似的方式编写所有的库和应用程序(因此是"标准"),否则会变得混乱。
我认为github上的大多数东西都会在库方法中,因此希望你在应用程序中做一些事情。