文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

VSCode中如何进行前端重构

2023-06-29 15:24

关注

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

重命名

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

操作步骤:

重构操作

魔法数字

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

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

操作:

例子:今年双十一持续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);}

复杂的逻辑条件

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

操作:

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

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);}

写了注释的代码片段

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

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

操作:

例子: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() {...}}

过长的函数

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

操作:

例子:上个例子中,可以将 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') {    ...  }}

重复的代码/过长的文件

操作:

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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯