以下两种传参的方式哪个更好?
/**
* [sayHello description]
* @Author Wangduanduan
* @DateTime 2016-12-08T14:15:01+0800
* @param {[String]} name [agent name]
* @param {[String]} age [agent age]
* @param {[String]} sex [agent sex]
* @return {[]} [description]
*/
function sayHello(name, age, sex){
console.log(name);
console.log(age);
console.log(sex);
}
/**
* [sayHello2 description]
* @Author Wangduanduan
* @DateTime 2016-12-08T14:17:29+0800
* @param {[Object]} agent [agent.name, agent.age, agent.sex]
* @return {[]} [description]
*/
function sayHello2(agent){
console.log(agent.name);
console.log(agent.age);
console.log(agent.sex);
}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
我更愿意从需求的复杂度和语义化的角度去看
前一种比较简单,传入的参数很直观明了,至于扩展性的话,可以给设置参数默认值,也问题不大
但是如果传入的参数,其实是一个整体,比如传入一个人的数据,包括身高、体重、三围等,那么就是一个整体,可以包装成对象再传递
不过要注意,传入的是基本类型还是引用类型是有差别的
看需求。都按第二种写虽然扩展性好,可很多时候也是白白增加了工作量。
比如什么修改用户数据啊,表单数据这类的,字段多而且后期很容易增删,这时候就用对象做参数。
不会经常变化的需求,第一种就行。
前者简单实用,后者参数扩展性好,随时能添加参数而不需要增加或减少参数个数啥的。
但是,后者就没那么直观,如果没有注释的情况下,后者参数可读性就比较差一些,如果代码多,可能找半天都不知道到底可以传哪些内容~
这个其实没有所谓一刀切的标准,主要按照应用场景区分。
如果参数个数少,相关性不大,选第一种
如果参数个数多,各参数之间具有明显的相关性,可以整合为一个有意义的整体,选第二种
nextState在这就是一系列state合集的Object第二种好
调用时不用记参数顺序
参数越多优势越明显