buguge - Keep it simple,stupid

知识就是力量,但更重要的,是运用知识的能力why buguge?

导航

定义方法的请求参数,是用参数列表的形式,还是用对象的形式?

引子

有如下登录窗体。页面向后端接口上送三个参数:登录名(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. 我们无法说哪个方案绝对好,我们也不能因噎废食,我们要做的是搞清楚每种形式的使用场景,在我们的应用实现中做出更合理的权衡。

posted on 2023-10-08 14:31  buguge  阅读(62)  评论(0)    收藏  举报