当前位置:  开发笔记 > 编程语言 > 正文

"保存"变量有什么理由吗?

如何解决《"保存"变量有什么理由吗?》经验,为你挑选了1个好方法。

我曾经写过一个同事写过这个函数:

setSentence: function (e) {
  this.setState({
    issueText: e.target.value
  });

  if (this.refs.messages.textContent.length > 0 && e.target.value.length > 2) {
    this.refs.messages.textContent = '';
  }
},

他在代码中的两个地方使用e.target.value.我倾向于做这样的事情:

let textBoxContent = e.target.value;

然后使用具有更具描述性名称的变量.

我曾经和他谈过这些避免变量的事情.他只是说他想要"保存变量".

想改变这些代码片段,但我还是不确定......

所以我的问题是:

"保存变量"分别避免代码中的变量是否有意义?



1> jfriend00..:

在一遍又一遍地重复冗长的代码时,"保存变量"没有经济性.对我而言,这绝对属于DRY(不要重复自己)的范畴.

Javascript解释器非常适合快速访问局部变量.在引用变量时,查找的第一个作用域是本地作用域,因此可以立即找到它,因此没有对局部变量的外部访问,使用它们的函数内的代码可以进行优化好.

最后,它可能与任何东西一样都是个人编码偏好.

我的个人规则是,如果我有一些多步骤引用,例如e.target.value我在函数中不止一次使用它,那么我将创建一个有意义的命名局部变量并将其分配给它,这样我就可以使用本地多个位置的变量,避免反复重复相同的多步属性引用(DRY的教科书示例).

这肯定会使代码更容易阅读,因为你有一个有意义的变量名,因为它只是一个简单的变量,而不是具有通用名称的多步属性引用.虽然,从技术上讲,它可能是局部变量赋值的一个额外代码行,它可以节省大量重复的属性查找,因此理论上应该更快地将结束值保存到每个时间textBoxContent而不必进行解释器查找e.target.value.


此外,对于那些希望在首次编写常规代码时进行微优化的人,您永远不会感到沮丧.像这样的优化通常只需要适用于所有代码的0.000001%,并且只有在您确切地证明了性能瓶颈的位置之后.而且,即使这样,您也必须在目标环境中设计多个基准来证明实际上使事情变得更快(不使用一个人的意见 - 仅测量).

在此之前,所有代码应该首先是正确的,清晰的,可读的,可维护的,可扩展的,干的,适当的性能以及在任何人考虑微优化之前的其他10个优先级.如果将上述优先级应用于您询问的案例,则e.target.value在上下文中多次引用它时,您将始终决定分配给局部变量.

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有