代码的坏味道——长参数

        前言:一个函数的参数越少越好,并不是参数少或不传更优雅,而是有其他方案来优化长参数。一个函数的参数尽量不要超过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: 'john.doe@example.com',  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: 'john.doe@example.com',  age: 30  },  userSettings: {  theme: 'dark',  notifications: true,  language: 'en'  }  };  }  
}  
</script>

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/42452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VueQuill 富文本编辑器技术文档快速上手

VueQuill 富文本编辑器技术文档 1. 安装 VueQuill2. 配置 VueQuill3. 在组件中使用 VueQuill4. 配置选项5. 事件处理6. 数据格式7. 自定义工具栏8. 示例项目结构9. 常见问题如何添加图片上传功能&#xff1f;如何自定义编辑器主题&#xff1f; 在此之前&#xff0c;我讲解过关于…

十一、作业

1.从大到小输出 写代码将三个整数数按从大到小输出。 void Swap(int* px, int* py) {int tmp *px;*px *py;*py tmp;} int main() {int a 0;int b 0;int c 0;scanf("%d %d %d", &a, &b, &c);int n 0;if (a<b){Swap(&a, &b);}if (a &l…

移动校园(2):express构建服务器,小程序调用接口,展示数据

express做服务器框架&#xff0c;mssql连接数据库&#xff0c;uni-request调用接口 这是文件夹目录 然后是index.js内容 const expressrequire(express) const appexpress() const uniRouterrequire("./uniRouter") const config{user:sa,password:123456,server:l…

vue2实现复制,粘贴功能,使用vue-clipboard2插件

一、需求说明 在项目中 点击按钮 复制 某行文本是很常见的 应用场景&#xff0c; 在 Vue 项目中实现 复制功能 需要借助 vue-clipboard2 插件。 二、代码实现 1、安装 vue-clipboard2 依赖 &#xff08; 出现错误的话&#xff0c;可以试试切换成淘宝镜像源 npm config set r…

基于YOLOv5的人脸目标检测

本文是在之前的基于yolov5的人脸关键点检测项目上扩展来的。因为人脸目标检测的效果将直接影响到人脸关键点检测的效果&#xff0c;因此本文主要讲解利用yolov5训练人脸目标检测(关键点检测可以看我人脸关键点检测文章) 基于yolov5的人脸关键点检测&#xff1a;人脸关键点检测…

C++ STL容器:序列式容器-堆pirority_queue

摘要&#xff1a; CC STL&#xff08;Standard Template Library&#xff0c;标准模板库&#xff09;在C编程中的重要性不容忽视&#xff0c;STL提供了一系列容器、迭代器、算法和函数对象&#xff0c;这些组件极大地提高了C程序的开发效率和代码质量。 STL 容器 分为 2 大类 …

[Python学习篇] Python文件操作

文件操作 打开文件 open 语法&#xff1a; file open(name, mode) 说明&#xff1a; file&#xff1a;文件对象。 name&#xff1a;要打开的目标文件名的字符串(可以包含文件所在的具体路径)。 mode&#xff1a;设置打开文件的模式(访问模式)&#xff1a;只读、写入、追加等…

批导会计凭证程序报错,通过监控点和消息类来定位触发的位置

ZFIU001 批导会计凭证报错&#xff0c;通过监控点和消息类来定位触发的位置 在使用程序导入会计凭证的时候&#xff0c;发现报错&#xff0c;后面找了很久很久的系统标准程序&#xff0c;打断点才找到这个位置&#xff0c;使用监控点还是可以比较快速找到报错的原因的&#xff…

QWidget窗口抗锯齿圆角的一个实现方案(支持子控件)2

QWidget窗口抗锯齿圆角的一个实现方案&#xff08;支持子控件&#xff09;2 本方案使用了QGraphicsEffect&#xff0c;由于QGraphicsEffect对一些控件会有渲染问题&#xff0c;比如列表、表格等&#xff0c;所以暂时仅作为研究&#xff0c;优先其他方案 在之前的文章中&#…

C# LINQ 详细用法以及概念

LINQ&#xff08;Language Integrated Query&#xff09;是C#和.NET框架中的一个强大功能&#xff0c;它允许开发者使用查询语法来访问和操作数据集合。LINQ提供了一种一致且直观的方式来处理不同类型的数据源&#xff0c;如集合、XML文档、数据库等。本文将详细讲解LINQ的各种…

计算机网络-第4章 网络层

4.1网络层的几个重要概念 4.1.1网络层提供的两种服务 电信网面向连接通信方式&#xff0c;虚电路VC。 互联网设计思路&#xff1a;网络层要设计得尽量简单&#xff0c;向其上层只提供简单灵活的&#xff0c;尽最大努力交付的数据报服务。 网络层不提供服务质量的承诺&#…

使用 Spring 配置邮件服务器

在现代的企业应用开发中&#xff0c;邮件发送是一个常见的需求。Spring 提供了强大的邮件支持&#xff0c;使得配置和发送邮件变得非常简单。本文将介绍如何在 Spring 应用中配置邮件服务器并发送电子邮件。 1. 引入 Spring 邮件依赖 首先&#xff0c;在项目的 pom.xml 文件中…

昇思学习打卡-10-ShuffleNet图像分类

文章目录 网络介绍网络结构部分实现对应网络结构 模型训练shuffleNet的优缺点总结优点不足 网络介绍 ShuffleNet主要应用在移动端&#xff0c;所以模型的设计目标就是利用有限的计算资源来达到最好的模型精度。ShuffleNetV1的设计核心是引入了两种操作&#xff1a;Pointwise G…

Activity启动模式探究

一、概括 Activity的启动模式主要分为四种&#xff1a;standard&#xff08;标准模式&#xff09;、singleTop&#xff08;栈顶复用模式&#xff09;、singleTask&#xff08;栈内复用模式&#xff09;和singleInstance&#xff08;单例模式&#xff09;。每种模式都有其特定的…

日常学习--20240705

1、IO流 按照IO操作的数据类型分为字节流和字符流&#xff1a; 字节流&#xff1a;又分为输入流&#xff08;其他程序传递过来的数据&#xff0c;读取流中的数据&#xff09;和输出流&#xff08;往流中写数据&#xff0c;传递给其他程序&#xff09;;可以操作二进制文件&…

国内采用docker部署open-metadata

背景 最近看看开源的元数据管理项目&#xff0c;比较出名点的有open-metadata、datahub、OpenLineage、atlas。 open-metadata有1千多的贡献者&#xff0c;4.8K的stars&#xff0c;社区现在也比较活跃&#xff0c;支持的数据库类型还蛮多&#xff0c;基本市面上常见的都有支持…

使用Python连接本地MySQL数据库并创建表后添加数据

一、使用Python连接本地MySQL数据库并创建表后添加数据 端口号&#xff1a;3307 用户名&#xff1a;root 密码&#xff1a;lms123456 数据库&#xff1a;test_01 from orm import *# 数据库连接对象 db MySQLDatabase(host"localhost",port3307,user"root…

【每日一练】python三目运算符的用法

""" 三目运算符与基础运算的对比 """ a 1 b 2#1.基础if运算判断写法&#xff1a; if a > b:print("基础判断输出&#xff1a;a大于b") else:print("基础判断输出&#xff1a; a不大于b")#2.三目运算法判断&#xff1a;…

揭秘IP:从虚拟地址到现实世界的精准定位

1.IP地址介绍 1.内网 IP 地址&#xff08;私有 IP 地址&#xff09; 内网 IP 地址&#xff0c;即私有 IP 地址&#xff0c;是在局域网&#xff08;LAN&#xff09;内部使用的 IP 地址。这些地址不会在公共互联网中路由&#xff0c;因此可以在多个局域网中重复使用。私有 IP 地…