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 关注
- 758 浏览
添加回答
举报
