首页 > 其他分享 >代码的坏味道——长参数

代码的坏味道——长参数

时间:2024-07-07 14:27:59浏览次数:15  
标签:const 味道 代码 getElementById 参数 key ChildComponent id

        前言:一个函数的参数越少越好,并不是参数少或不传更优雅,而是有其他方案来优化长参数。一个函数的参数尽量不要超过3个,如果超过了这个限制,那么代码的坏味道就产生了。

一、整合参数

如果参数很多,那么第一就要考虑,这些参数是否存在关联?若存在是否可以归为一组?

badCase:

function updateElements(element1, text1, element2, text2, element3, text3) {  
    element1.innerText = text1;  
    element2.innerText = text2;  
    element3.innerText = text3;  
}  
  
// 使用该函数  
const header = document.getElementById('header');  
const mainContent = document.getElementById('main-content');  
const footer = document.getElementById('footer');  
  
updateElements(header, 'Welcome!', mainContent, 'This is the main content.', footer, 'Goodbye!');

goodCase:

function updateElements(elements) {  
    for (const key in elements) {  
        if (elements.hasOwnProperty(key) && document.getElementById(key)) {  
            const element = document.getElementById(key);  
            element.innerText = elements[key];  
        }  
    }  
}  
  
// 使用该函数  
updateElements({  
    'header': 'Welcome!',  
    'main-content': 'This is the main content.',  
    'footer': 'Goodbye!'  
});

二、避免静态数据做参数传递

静态的变量尽量直接使用,避免产生多余的参数。

badCase:

created () {
    this.getUserInfo(this.$router.query.id)
},

methods: {
    getUserInfo(id) {
       axios.get('/user', {
          params: {
            id
          }
       })
   }
}

goodCase:

created () {
   this.getUserInfo()
},

methods: {
   getUserInfo() {
      axios.get('/user', {
         params: {
           id: this.$router.query.id || ''
         }
      })
   }
}

三、组件中的父传子的参数较多

避免父传子的参数过多

badCase:

<template>  
  <div>  
     <ChildComponent 
        :name="name" 
        :email="email" 
        :age="age" 
        :theme="theme" 
        :notifications="notifications" 
        :language="language" 
     /> 
  </div>  
</template>  
  
<script>  
import ChildComponent from './ChildComponent.vue';  
  
export default {  
  components: {  
    ChildComponent  
  },  
  data() {  
    return {  
        name: 'John Doe',  
        email: '[email protected]',  
        age: 30   
        theme: 'dark',  
        notifications: true,  
        language: 'en'  
      }  
    };  
}  
</script>

goodCase:

<template>  
  <div>  
    <ChildComponent :userInfo="userInfo" :userSettings="userSettings" />  
  </div>  
</template>  
  
<script>  
import ChildComponent from './ChildComponent.vue';  
  
export default {  
  components: {  
    ChildComponent  
  },  
  data() {  
    return {  
      userInfo: {  
        name: 'John Doe',  
        email: '[email protected]',  
        age: 30  
      },  
      userSettings: {  
        theme: 'dark',  
        notifications: true,  
        language: 'en'  
      }  
    };  
  }  
}  
</script>

四、子组件中需要父组件的所有属性

    <custom-input v-bind="$attrs" />  

标签:const,味道,代码,getElementById,参数,key,ChildComponent,id
From: https://blog.csdn.net/m0_46846526/article/details/140244282

相关文章

  • 微信小程序-首页制作 - (图解+代码流程)
    目录首页制作效果图一、轮播图的制作1.首页轮播图.wxml代码2.swiper和swiper-item组件二、滑动视图效果图1.首页滑动视图.wxml代码scroll-view组件2.首页滑动视图.wxss代码white-space:nowrap;三、标题和学员作品图片布局效果图1.标题和作品图片.wxml代......
  • cv2中二值图轮廓与轮廓层级参数cv2.RETR_TREE
    1.二值图的轮廓在使用cv2.findContours时,黑白二值图(像素值只有0或255)的轮廓都是以白色像素作为前景,黑色像素作为背景。看下面两个图(左图与右图同样大小都是200x200,左图是四周为黑色,中间为白色,右图为四周为白色,中间为黑色)。               ......
  • 使用zdppy_api+onlyoffice word文档在线共同编辑,附完整的vue3前端代码和python后端代
    参考文档:https://api.onlyoffice.com/zh/editors/basichttps://api.onlyoffice.com/zh/editors/coedit基本的架构思考:文档表:记录的是文档信息key:这个key可以标识唯一的一个文档,可以是文档的hash值fileType:文档的类型,docx,txt,pdf,其他title:文档的标题,也就是文档的实际......
  • 轻松解决win7和win10共享打印机出现错误代码0x00000709的办法
    轻松解决win7系统共享打印机错误代码0x00000709的办法轻松解决win10系统共享打印机错误代码0x00000709的办法为了方便用户更方便充分的利用打印机,配置打印机共享功能,开启共享后可以查询到共享的打印机,但是点击选择连接时出现错误代码0x00000709,尝试了各种方法修改注册表等还......
  • C#开发单实例应用程序并响应后续进程启动参数
    C#默认的WinForm模板是不支持设置单实例的,也没有隔壁大哥VB.NET那样有个“生成单个实例应用程序”的勾选选项(VB某些时候要比C#更方便),实现单实例可以有多种方法:检测同名进程:Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName),如果集合的Length>1那就表明已......
  • Java毕设项目汇总 - 1 - springboot框架+vue+源代码+论文等完整资料
    逃逸的卡路里博主介绍:✌️码农一枚|毕设布道师,专注于大学生项目实战开发、讲解和毕业......
  • 001,函数指针是一种特殊的指针,它指向的是一个函数地址,可以存储函数并作为参数传递,也可
    函数指针是一种特殊的指针001,函数指针是一种特殊的指针,它指向的是一个函数地址,可以存储函数并作为参数传递,也可以用于动态绑定和回调函数文章目录函数指针是一种特殊的指针前言总结前言#include<iostream>usingnamespacestd;intadd(inta,intb){ return......
  • YARA:第一章-启动参数
            YARA是一个多功能的恶意软件分析工具,它允许用户创建描述性规则来识别和分类文件,尤其是恶意软件。YARA的核心是规则引擎,它支持通过文本或二进制模式创建规则,这些规则可以包含字符串和逻辑表达式,提供高度的可定制性。YARA的规则集可以利用通配符、不区分大小......
  • stm32串口 环形缓冲区 代码
    voidHAL_UART_RxCpltCallback(UART_HandleTypeDef*huart){ //printf("ITIN\r\n");// printf("%d\r\n",HAL_GetTick()); //置零设定电流值PID时间if(huart->Instance==USART3){ //将数据放入缓冲区 circular_buffer.buffe......
  • 重识Java中的代码块
    目录一、基本介绍二、基本语法三、代码块的好处3.1普通代码块 3.2静态代码块四、代码块调用顺序 一、基本介绍代码块又称为初始化块,属于类的成员,类似于方法,将逻辑语句封装在方法体中,通过{}包围起来。但是与类不同的是,它没有方法名,没有返回,没有参数,只有方法体,......