我的编程空间,编程开发者的网络收藏夹
学习永远不晚

VSCode中如何进行前端重构

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

VSCode中如何进行前端重构

这篇文章主要介绍“VSCode中如何进行前端重构”,在日常操作中,相信很多人在VSCode中如何进行前端重构问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”VSCode中如何进行前端重构”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

重命名

为什么要重命名:命名不清晰,无法让人理解。

操作步骤:

  • 选中变量名,鼠标右键选择重命名符号(Rename Symbol),或者使用快捷键 F2

  • 弹出框输入想要修改的名字;

  • VSCode 会把后续相关的名字都改掉。

重构操作

  • 选中要重构的内容,鼠标右键选择重构(Refactor),或者使用 Ctrl + Shift + R

  • 根据选中的内容,可能会出现以下内容供选择重构:

    • generate ‘get’ and ‘set’ accessors 生成get、set处理器

    • 将函数转换成 ES2015类

    • 将所有函数转换成类

    • 提取到 class 'xxx' 中的 Method

    • 提取到 class 'xxx' 中的 readonly field

    • generate ‘get’ and ‘set’ accessors 生成get、set处理器

    • Extract function

    • 提取到当前函数里的 inner function

    • 提取到 Module 范围的 function

    • 提取到 global 范围的 function

    • Convert to template string 转换成模板字符串

    • Extract constant

    • 提取到封闭范围的 constant

    • 提取到 Module 范围的 constant

    • Convert to optional chain expression

    • 删除未使用的声明

    • 在未使用的声明前

    • Move to a new File

    • Convert default export to named export

    • Convert named export to default export

    • Convert namespace import to named export

    • Convert named imports to namepace export

    • import/export

    • 函数/类

    • 变量/表达式

    • 字符串

    • 表达式/函数

    • 对象方法

魔法数字

为什么要修改魔法数字?因为除进制数之外,数字的实际意义无法被人看懂。

目标:定义一个常量值,写清楚改数字的实际意义。

操作:

  • 选中魔法数字进行重构。根据需要,推荐选择:

    两者都会定义一个常量,前者定义在当前函数内,后者则是整个模块/文件中;

    • 提取到封闭范围的 constant

    • 提取到 Module/global 范围的 constant

  • 代码抽取到新的变量中,并出现重命名的输入框;

  • 使用全大写单词,单词使用“_”间隔。

例子:今年双十一持续13天,计算除双十一促销结束的时间。

function promotionEndDate() {  return new Date(new Date('2022-11-11').getTime() + 13 * 60 * 60 * 24 * 1000);}function promotionEndDate() {    const START_DATE = '2022-11-11';    const LASTING_DAYS = 13;    return new Date(new Date(START_DATE).getTime() + LASTING_DAYS * 60 * 60 * 24 * 1000);}

复杂的逻辑条件

为什么要修改复杂逻辑?复杂的逻辑,往往条件判断繁多,阅读难度比较高。

操作:

  • 选中复杂的逻辑条件进行重构。根据需要,选择:

    • 提取到封闭范围的 constant

    • 提取到当前函数里的 inner function

    • 提取到 Module/global  范围的 function

  • 代码抽离到一个新的变量/函数中,并出现重命名的输入框;

  • 使用驼峰命名,使用 is/has 起头,每个单词首字母大写。

例子:返回指定的某个月有多少天

function monthDay(year, month) {    var day31 = [1, 3, 5, 7, 8, 10, 12];    var day30 = [4, 6, 9, 11];    if (day31.indexOf(month) > -1) {        return 31;    } else if (day30.indexOf(month) > -1) {        return 30;    } else {        if ((year % 4 == 0) && (year % 100 != 0 || year % 400 == 0)) {            return 29;        } else {            return 28;        }    }}function monthDay(year, month) {    ...    if (day31.indexOf(month) > -1) {        return 31;    } else if (day30.indexOf(month) > -1) {        return 30;    } else {        if (isLeapYear(year)) {            return 29;        } else {            return 28;        }    }}function isLeapYear(year) {    return (year % 4 == 0) && (year % 100 != 0 || year % 400 == 0);}

写了注释的代码片段

更推荐代码即注释的理念。我们写注释之前要想明白为什么需要注释?

  • 如果代码本身已经很清晰,应该删除注释。

  • 如果抽取代码片段,取个合适的名字,能让代码易于阅读,也可以删除注释。

目标:将代码片段抽取出来做成函数,函数以此代码块的具体功能做命名。

操作:

  • 选择代码块,重构(Refactor)。选择:

    • 提取到当前函数里的 inner function

例子:ajax 请求

function ajax(options) {  options = options || {};  options.type = (options.type || 'GET').toUpperCase();  options.dataType = options.dataType || 'json';  const READY_STATE = 4;  const NET_STATUS = {    OK: 200,    RIDERCT: 300  };  const params = this.formatAjaxParams(options.data);  let xhr;  // 创建 - 非IE6 - 第一步  if (window.XMLHttpRequest) {    xhr = new window.XMLHttpRequest();  } else { // IE6及其以下版本浏览器    xhr = new window.ActiveXObject('Microsoft.XMLHTTP');  }  // 连接 和 发送 - 第二步  if (options.type === 'GET') {    ...  } else if (options.type === 'POST') {    ...  }    // 接收 - 第三步  xhr.onreadystatechange = function () {    if (xhr.readyState === READY_STATE) {      ...    }  };}// 修改后function ajax(options) {  ...  let xhr;  create();  connectAndSend();  recieve();  function create() {...}  function connectAndSend() {...}  function recieve() {...}}

过长的函数

功能拆分做成外部函数,再在内部调用。

操作:

  • 选择代码块重构,选择:

    • 提取到 Module/Global  范围的 function

  • 代码块会生成一个函数,并携带必要的参数

例子:上个例子中,可以将 ajax 的接收模块独立成模块的function

function ajax(options) {  ...  create();  recieve();  connectAndSend(options, xhr, params);}function connectAndSend(options, xhr, params) {  if (options.type === 'GET') {    ...  } else if (options.type === 'POST') {    ...  }}

重复的代码/过长的文件

操作:

  • 选择代码块重构,选择 Move to a new file

  • 代码会迁移到以当前函数/类作为文件名的文件中;如果有多个类/函数,会以第一个类/函数做命明

  • 将函数/类使用 export 暴露出去;

  • 在原文件中用 import 引入函数/类。

import/export

default 和命名、命名空间和命名的转换。

// namedexport function nextMonthDay(year, month) {}// defaultexport default function nextMonthDay(year, month) {}// namepace import * as refactor from './refactor';// namedimport { nextMonthDay } from './refactor';

对象方法

生成get、set处理器

const person = {  age: 32};// 生成get、set处理器const person = {  _age: 32,  get age() {    return this._age;  },  set age(value) {    this._age = value;  },};

模板字符串

字符串拼接,快速转换成模板字符串:

class Person{  constructor(firstName, lastName) {    this.firstName = firstName;    this.lastName = lastName;  }  getFullName() {    return this.firstName + ' ' + this.lastName;  }}// 模板字符串class Person{  constructor(firstName, lastName) {    this.firstName = firstName;    this.lastName = lastName;  }  getFullName() {    return `${this.firstName} ${this.lastName}`;  }}

生成get、set处理器,与对象方法的结果类似。

提取到 class xxx 的 Method, 与上面写注释的代码、重复代码提取的类似。

在此不再复述。

提供 ES 2015 类转换,支持原型方法转换。

const Person = function() {  this.age = 32;};Person.prototype.getAge = function() {  return this.age;}Person.prototype.setAge = function(value) {  return this.age = value;}// ES 2015 类class Person {  constructor() {    this.age = 32;  }  getAge() {    return this.age;  }  setAge(value) {    return this.age = value;  }}

到此,关于“VSCode中如何进行前端重构”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

VSCode中如何进行前端重构

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

VSCode中如何进行前端重构

这篇文章主要介绍“VSCode中如何进行前端重构”,在日常操作中,相信很多人在VSCode中如何进行前端重构问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”VSCode中如何进行前端重构”的疑惑有所帮助!接下来
2023-06-29

如何进行C++代码的重构?

C++是一种非常强大、灵活且广泛使用的编程语言,但是随着项目的不断发展和代码的持续相对重用,会存在代码质量的下降、可读性的下降等问题。这时候就需要对代码进行重构,以达到更好的代码质量和更高的可维护性。本文将介绍如何进行C++代码的重构。定义
如何进行C++代码的重构?
2023-11-04

如何进行H5前端性能测试

如何进行H5前端性能测试,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。说到H5测试,对于做WEB测试的同学来说再熟悉不过了,它包括页H5功能测试,前端性能测试,
2023-06-05

如何进行Web前端性能优化

这篇文章给大家介绍如何进行Web前端性能优化 ,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Yahoo! 的 Exceptional Performance team 在 Web 前端方面作出了卓越的贡献。广为人知的优
2023-06-08

python框架django中如何结合vue进行前后端分离

python框架django中如何结合vue进行前后端分离,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一:创建django项目django-admin startprojec
2023-06-26

前端如何用post的方式进行eventSource请求

这篇文章主要给大家介绍了关于前端如何用post的方式进行eventSource请求的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
2023-05-15

C++开发建议:如何进行C++代码重构

C++开发建议:如何进行C++代码重构在软件开发过程中,代码重构是一个非常重要的环节。因为随着项目的进展和需求的变化,代码可能会变得越来越复杂和臃肿,影响到整个项目的可维护性和可扩展性。而C++作为一种被广泛应用的编程语言,更是需要在代码重
C++开发建议:如何进行C++代码重构
2023-11-22

vscode中如何进行页面缩放和字体调整

今天就跟大家聊聊有关vscode中如何进行页面缩放和字体调整,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。VSCode页面放大缩小和字体的调整方式使用方式     在日程的使用过程中
2023-06-22

如何使用自定义hooks对React组件进行重构

这篇文章主要介绍了如何使用自定义hooks对React组件进行重构的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用自定义hooks对React组件进行重构文章都会有所收获,下面我们一起来看看吧。处理复杂性
2023-07-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录