定义方法的请求参数,是用参数列表的形式,还是用对象的形式?
引子
有如下登录窗体。页面向后端接口上送三个参数:登录名(loginName)、登录密码(password)、验证码(key)。
如果让你定义后端的这个登录接口方法,你怎么定义?
系统开发中,这是个很常见的应用场景,也很容易实现。读完本文,你将会有新的认识和收获。
正文
🍀在编程中,定义请求参数可以使用参数列表的形式,也可以使用对象的形式。
1. 参数列表的形式:使用参数列表时,请求参数作为函数或方法的参数进行传递。每个参数都有一个对应的位置,调用者需要按照参数的顺序提供相应的值。例如,在Python中的函数定义可以是这样的:def my_function(param1, param2, param3):,然后调用函数时需要按照相同的顺序提供参数值:my_function(value1, value2, value3)。
2. 对象的形式:使用对象时,请求参数被封装到一个对象或结构体中,并作为单个参数传递。对象可以包含多个属性,每个属性对应一个请求参数。这种方式使得代码更具可读性和可维护性,因为参数的名称可以提供更多的上下文信息。例如,在JavaScript中,可以使用对象字面量来表示请求参数:var params = { param1: value1, param2: value2, param3: value3 };,然后将对象作为参数传递给函数或方法:myFunction(params);。
我们如何做选择呢?定义方法的参数,是选择用参数列表的形式,还是选择用对象的形式?
🍀看情况。通常,参数较少(例如:少于3个参数)且不太可能发生变化时,用参数列表的形式更易读。当参数较多时,推荐使用对象的形式。
还有一些特殊情况,例如,用户登陆方法 login(String loginName, String password, String key);
调用这个方法我们可以是:login('yameiom','bjux','ed076287532e8636');
。由于这个方法包含3个类型相同的String参数,使用者可能会出现传错顺序的情况,login('yameiom','ed076287532e8636','bjux');
。 为了规避这种误传的情况发生,我们有必要将这个方法入参改造成对象的形式,即会大大降低误传的风险。
🍀each coin has two sides. 我们无法说哪个方案绝对好,我们也不能因噎废食,我们要做的是搞清楚每种形式的使用场景,在我们的应用实现中做出更合理的权衡。
当看到一些不好的代码时,会发现我还算优秀;当看到优秀的代码时,也才意识到持续学习的重要!--buguge
本文来自博客园,转载请注明原文链接:https://www.cnblogs.com/buguge/p/17749010.html