【发布时间】:2013-02-21 23:33:32
【问题描述】:
我有一个函数接受 checkGlossary bool 参数以及可选的 glossary 数组。
它们的状态直接联系在一起。
如果 bool 为 FALSE,则从不需要词汇表,反之,如果 bool 为 TRUE,则总是需要。
对我来说,这似乎可以很容易地简化为:
// Current
function doSomething($param1, $param2, $checkGlossary=FALSE, $glossary=NULL){
// blah blah blah
if($checkGlossary)
array_search($glossary[$param2]);
// etc etc etc
}
...到:
// Proposed
function doSomething($param1, $param2, $glossary=FALSE){
// blah blah blah
if($glossary)
array_search($glossary[$param2]);
// etc etc etc
}
我唯一的犹豫是$glossary 的类型(bool 或 array)是不可预测的。
只要我不违反某些最佳实践准则,我就不会感到困扰。
想法?
【问题讨论】:
-
最简单的解决方案是删除
checkGlossary标志并仅使用glossary变量。设置array()为默认值,如果数组为空则省略检查。 -
最佳实践:当一个方法需要超过 2 个参数时,需要重新考虑(通常)。
-
@TillHelgeHelwig Yours 是我对所提问题最喜欢的答案(因为将
array()指定为默认值)。如果你把它放在答案中,我会选择它。 -
@WesleyMurch 嗯...看起来我有一些重构要研究 :) 感谢您的建议。
-
@mOrloff 好的。发布它。昨天没时间。 :)
标签: php types parameters