我读过的大多数内容都讨论过“你应该永远不会有超过2或3个函数的参数!”。但是,我需要几个将大量数据插入数据库的函数。例如展示数据包括当前日期,用户所在国家/地区,用户IP,用户运营商,设备制造商,列表,有时还包含20多个变量。
在这种情况下,没有办法简化功能 - 它只做一个动作,只需要很多参数。我想出了两个解决方案。第一种是简单地包含参数列表。 e.g:
function newMethod($p1, $p2, $p3, $p4, $p5, $p6, ...) { }
第二个是我个人更喜欢的东西,但是它使某些涉及功能签名的IDE的有用功能无效。这是第二个选择:
public function addObject(
$vars = array(
'options' => array(),
'data' => array(
'Object_Attribute' => 0, /* Variable comments */
'Object_Attribute_2' => '' /* Variable comments */
)
)
) {}
我可以记录每个变量,因此这不是问题。 (除了前面提到的签名问题)有了这个,我还可以简单地包含sql表名作为键,使插入过程更简单。 (使用implode,array_keys等)
除个人偏好外,我认为除此之外没有任何不利因素。当然,我确实需要做一些empty()/ isset()调用以确保关键参数存在,但这也不是一个大问题,并且在大多数情况下仍然会使用第一个方法完成确保没有空值/空值。
有人能用后一种方法的缺点(如果有的话)来启发我吗?我是关联数组的忠实粉丝,觉得它们看起来比xx变量列表更好。这种偏好是否有任何问题可能导致重大问题,或者这是程序员A是否发现它比程序员B更具可读性的问题?