不得不知道的三种简单实用的传参方式
admin
2023-06-12 08:01:51
0

首先声明,本干货的观点仅代表个人观点,拿出来和大家唠叨唠叨。

最近在写代码的时候,发现了一个有趣的事情。就是我创建了一个新的函数,但是因为各种需求,各种功能设计的原因,函数的形参数目达到了10多个之多。

而这个时候,由于本函数是一个公共函数,所以被调用的地方十分多,当这个函数的形参需要增删改的时候,可谓牵一发而动全身(当然,出现这种情况就应该想到是不是设计有问题了,耦合度这么高,但这次先不谈这个),所以针对这种情况,我分别思考了3种最常用的传参方式。


    第一种


直接传参,每个参数一个个的排好队写上,例如:

不得不知道的三种简单实用的传参方式

                   图片来自睿江云计算 

优点:

1. 传入的参数清晰,明确可以知道传入参数有多少个,分别代表什么意思,从语义上一目了然。

2. 调用方便,调用者直接传参,无需对参数进行处理加工。

3. 对新手来说更加友好,更容易理解。


缺点:

1. 形参太多,代码失去了美感,太随性了。

2. 当某个参数需要改动的时候,简直是牵一发而动全身,比如$param5改为选填参数,并且默认值为test:


     不得不知道的三种简单实用的传参方式

                                图片出自睿江云计算

缺点很明显,这个时候由于php参数顺序的问题,选填参数必须在最后,所以所有调用者都需要起码把原来的param5去除,放在参数最后位置,改动代价高。

总结:当参数少的时候,可以使用直接一个个参数传递,这样是最好的,但是当参数过多,或者改动需求大的时候,这种方法无疑是繁重的。


所以针对上面这种,当参数数量过多的时候,可以使用方法二:


    第二种


把参数组合成一个数组的形式,整一个数组当做参数进行传递。例如:

    不得不知道的三种简单实用的传参方式 

                            图片出自睿江云计算

优点:

1. 代码更加整洁了。

2. 代码更加灵活,现在就算有一个参数需要改动,也无需修改函数的参数,只需要在调用者处增加参数即可。


缺点:

1. 没有了php的语法限制。例如没有了string这种的类型限制,没有了带默认值的选填参数的语法限制。这样子就需要你做多一层参数的检查。

2. 参数可读性差了。函数的数组里面有哪些参数是不能通过形参看出来的,需要查看调用者的数组组成。

总结:总体来说这种方法可以解决第一种传参方式的弊端,但是也自身带来了更加大的弊端,参数的限制需要另外增加一层钩子去处理,可以说是性价比比较低的一种方法。


综合上面两种方法的利弊,我总结出第三种传参方式:


     第三种


传递一个数据结构对象当做参数,例如:

    不得不知道的三种简单实用的传参方式 

                                                            图片出自睿江云计算

优点:

1. 参数为一个数据结构,保证数据的完整性。就是传进来的数据结构必然能包含所需的参数。

2. 当参数需要更加或者减少的时候,只需要修改数据结构模型的对象属性即可。

3. 把数据的控制和限制可以统一放在模型层进行处理。


缺点:

1.可能需要多个数据结构模型。

总结:总体来说这种方法可以比较全面的解决第一第二种方法的弊端,就是需要建立多种数据结构模型,增加了代码量。


以上就是介绍的3种传参的种类,这是一个细节性,场景性的问题,不知道能不能明白个中意思呢?


相关内容

热门资讯

国家两部门:开展矿山机器人应用... 国家矿山安全监察局综合司 工业和信息化部办公厅关于开展矿山机器人应用验证试点工作的通知 国家矿山安全...
打造“终身学习之城”,杭州积极... 潮新闻客户端 记者 徐婷 俞刘东 通讯员 许慧敏 人工智能时代日新月异,培养适应时代生存发展的人才,...
荣耀平板20问世 内置1010... 【CNMO科技消息】5月25日晚间,CNMO科技注意到,荣耀平板20已正式发布,新品首销价1899元...
华为芯片破局!五年干到1.4n... 说起何庭波这个名字,想必各位IT之家家友是既熟悉又陌生。 熟悉在于她坐拥华为公司董事、半导体业务部总...
美加州故障化学品储罐爆炸风险排... 新华社洛杉矶5月25日电(记者高山 谭晶晶)美国加利福尼亚州奥兰治县官员25日说,当地此前发生泄漏的...
雷军:小米汽车电池安全测试项目... 来源:环球网 【环球网科技综合报道】5月25日消息,小米创办人、董事长兼 CEO 雷军发布了小米汽...
2026续航“顶级”的全能旗舰... 要说近两年手机行业感知最强的技术进步,电池肯定算一个,毕竟今年连影像旗舰和小屏机都能把电池堆到700...
在德国失联的23岁中国留学生,... 近日,有网友发帖称,一名23岁中国男留学生在德国失联数日,其家属正在紧急寻人,引发关注。据极目新闻报...
美光HBM4增产进展顺利,HB... IT之家 5 月 25 日消息,据韩媒 The Elec 今日报道,美光科技第六代高带宽内存 HBM...
AIROBO正式发布“冲刺全球... 全球机器人产业,正在经历一次比“智能手机时代”更深层的产业迁移。 过去十年,机器人行业的竞争核心始终...