哪种做法更好?为什么?
声明一个变量:
exampleFunction(requestData: Object) {
const username = requestData.username;
doSomething(username);
}
还是直接访问对象属性?
exampleFunction(requestData: Object) {
doSomething(requestData.username);
}
如果我使用的代码超过50行并且该变量被多次使用该怎么办。我应该多次使用变量“用户名”还是多次使用“ requestData.username”?
答案 0 :(得分:5)
V8 Javascript Engine对代码进行一些优化预处理,并检查是否可以删除某些变量或代码中是否存在某些常规模式,以减少执行负载。
因此,使用表单或其他表单(至少使用V8引擎(例如Chrome或NodeJS))不会出现内存问题。
即使不执行此优化,它也只是一个指针或原始变量,因此花费的字节数不会超过
。我们谈论传输代码的成本是不同的。我们知道JavaScript不是一种编译语言,它需要到达客户的计算机才能执行,因此每个空间,缩进,分号都将按照传输时间的顺序进行计算。
为降低成本,您可以丑化和缩小代码,但通常不会执行这种优化。
最后,不可能想到可以发挥作用的场景,因此我建议您使用您认为更容易阅读的表格,而与其他参数无关。
答案 1 :(得分:5)
通过重构Martin Fowler是一项技术(Replace Temp with Query)。
之后,您将转到第二个变体
cloneFullProject(requestData: Object) {
doSomething(requestData.username);
}
但是它也有气味(Middle Man)。
作为此示例的结论,最好完全删除此方法:)
但是,在某些情况下,首选首选示例。例如:
您有几种采用requestData.username
参数的方法。
exampleFunction(requestData: Object) {
const username = requestData.username;
doSomething1(username);
doSomething2(username);
...
}
在这种情况下,临时变量是合理的
答案 2 :(得分:3)
首选专家:
第一选择的缺点:
答案 3 :(得分:2)
首先,您是referencing
对象,而不是克隆对象。
正确的克隆方法是通过Object.assign()或lodash(或类似的)_.cloneDeep()或散布运算符或其他任何东西。
有关克隆的更多信息,请参考typescript - cloning object。
提到这个问题,当您只有一个变量来工作时,在如此短的方法中,两个变量的可读性相同。
因为该方法太短,所以我宁愿使用后者,因为读取一行代码可以说明我将对象的什么属性传递给方法,而不是反向读取代码。
就我个人的喜好和一般性观点而言,解构是另一位程序员希望从您的代码中获得的最干净的方式:
const { username, var1, var2 } = requestData;
答案 4 :(得分:1)
从根本上讲,这是一个基于意见的问题。因此,以下给出的答案是我的观点。