2017-10-18 88 views
1

将参数作为数组或参数传递给方法是更好吗? 我觉得一个数组会让这个方法变得更加灵活,当然这也可以通过继承来完成,但是会使数据传递更加不透明,因为变量在处理某些类型方法,但对用户的方法更清楚?将方法参数作为变量或数组传递

哪个更好,我的假设是否正确?

实例

public function addToCart($sku, $itemPrice, $itemCost, $itemName, $itemColor ....) {} 

public function addToCart($itemArray, $userArray) {} 
+1

如何在使用数组时对数值的类型和有效性做出保证? – PeeHaa

+0

乍一看,它看起来像你需要的对象:'Item'和'User'而不是两个数组。说,我宁愿更灵活的第二种方法 – DonCallisto

+0

你可能更好[依赖注入](http://php-di.org/doc/understanding-di.html) - 所以你会通过一个特定类型的对象而不是数组,例如'addToCart(MyProduct $ product){...}' - 这样您就可以以定义的格式准确获取所需的数据。 – CD001

回答

5

的方法的整个点是使作为描述性和混凝土越好。如果你仅仅传递一个数组,你无法控制发送给函数的内容以及函数需要什么工作。这很快导致错误和错误。

如果您发现自己处于一种方法变得太大的情况,那么您最有可能构建的功能太多了。一个功能应该做一个的事情。学习将它们分开并调用其他函数。

最后,您应该适应OOP并传递对象,而不是一堆没有以有意义的方式连接的单独变量。取而代之的是:

public function addToCart($sku, $itemPrice, $itemCost, $itemName, $itemColor ....) {} 

你应该做这样的事情:

public function addToCart(Item $item) {} 

学习如何构建更大的项目,课程和系统是一项艰巨的任务,它需要一段时间才能得到它的权利。即使是经验丰富的建筑师和程序员也会不时地构建可怕的类和方法。重构是关键。花时间找出解决问题的最佳角度,而不是像数组传递或无休止的参数那样的快捷方式。

+1

假设'$ item'是一个产品,这是一个相当安全的赌注,'$ sku'将是一个属性... – CD001

+0

@ CD001你说得对。为了简单起见,我删除了它。 – OptimusCrime

+0

快速问题这是PHP你可以在你使用的上下文中使用静态类型? (Item $ item) –