function function a($lyc1,$lyc2,$lyc3){
$a = $lyc1;
$b = $lyc2;
$c = $lyc3;
}
function function b(){
$a = $this->$lyc1;
$b = $this->$lyc2;
$c = $this->$lyc3;
}
请问下传参好还是在类中定义$lyc1,$lyc2,$lyc3好?
因为我一个方法中要调用几个函数,并且每个函数都要传几个参数,感觉不好看,
所以想换成方法b这样,但是不知道方法a和方法b哪个效率更好。
由于我对原理不是很懂,但又想知道哪个更优,请大佬们解释一波原理。
4 回答
浮云间
TA贡献1829条经验 获得超4个赞
其实这个不是效率上的问题,因为一定程度上,你很难体现出效率的区别。你的意思是定义成属性来访问是不是会更好。
一个方法中要调用几个函数,并且每个函数都要传几个参数,感觉不好看。
那你就要想了,这几个函数所调用的几个参数,出镜率有多高。如果你一个2000行的类,如果$lyc1只出现了一次,它适合定义成属性吗?显然不太好,因为它是属于这个函数的,而这个类跟他关系不大;也可以从这个属性存在的意义去考虑。
说得粗俗点,一般我们把这个类里通用的变量定义成属性。好处是,在这之上可以区别public,protected和private来做访问控制;以及考虑是否使用static静态属性,等等...
但是不是把所有的参数都扔到前面当属性
可以看一些设计模式的内容。
神不在的星期二
TA贡献1963条经验 获得超6个赞
除了楼上说的出镜率的问题,还需要注意:
限制函数参数个数极其重要,这样测试你的函数容易点。有超过3个可选参数参数导致一个爆炸式组合增长,你会有成吨独立参数情形要测试。
无参数是理想情况。1个或2个都可以,最好避免3个。再多就需要加固了。通常如果你的函数有超过两个参数,说明他要处理的事太多了。 如果必须要传入很多数据,建议封装一个高级别对象作为参数。
坏:
function createMenu(string $title, string $body, string $buttonText, bool $cancellable): void
{
// ...
}
好:
class MenuConfig
{
public $title;
public $body;
public $buttonText;
public $cancellable = false;
}
$config = new MenuConfig();
$config->title = 'Foo';
$config->body = 'Bar';
$config->buttonText = 'Baz';
$config->cancellable = true;
function createMenu(MenuConfig $config): void
{
// ...
}
莫回无
TA贡献1865条经验 获得超7个赞
是的,函数一般参数不要超过三个,超过的话最好以一个对象的形式传参,这样比较容易控制函数的稳定性,至于你说的不好看,我觉得无所谓啊,编程的思想就是间接,公用的变量抽象出来变成属性,某个函数用的变量当然是传参进去了。
- 4 回答
- 0 关注
- 679 浏览
添加回答
举报
0/150
提交
取消