在参数中声明一个数组是不好的做法?

时间:2015-02-06 11:52:56

标签: javascript

validationError([elem1,elem2],type,shiftNo);

var arr = [elem1,elem2];
validationError(arr,type,shiftNo);

我想要问的是调用被认为是坏的函数的方法1(它也有任何性能分支)。就此而言,在参数内声明字符串,对象和函数是一种糟糕的方法。

4 个答案:

答案 0 :(得分:7)

性能不是问题,不是像JS,Ruby或诸如此类的语言。所以我们所能做的就是考虑代码的可读性。这个案例与JS没有很强的关系,所以我的例子也是如此。

move = ["E2", "E4"];
if chessboard.valid(move, player) {
  ...
}

这清楚地表明:“如果移动(E2 E4)对这个棋盘有效,那么......”,你甚至不需要查看文档就知道这一点。如果我们在没有为数组指定名称的情况下编写它,结果看起来有点神秘(仍然很容易猜到,但对于这么小的例子来说更难):

if chessboard.valid(["E2", "E4"], player) {
  ...
}

这是什么意思? valid代表什么?也许,它会问这些单元格是否包含有效的玩家作品?这是一个设计缺陷的症状,更确切地说是错误的命名。它对如何使用棋盘代码做出大胆的假设。我们可以通过重命名chessboard的方法来明确表示此数组表示移动:

if chessboard.valid_move(["E2", "E4"], player) {
  ...
}

这样做会更好,但是您可能没有一个API可以让代码在没有其他命名的情况下保持可读性。

所以,我建议一个经验法则:

  1. 如果数组将被多次使用,请为其命名。
  2. 如果数组的含义不明显(函数名称),请将其命名为。
  3. 除非第1或第2点适用,否则不要命名。

答案 1 :(得分:2)

它确实没有任何区别。无论哪种方式,您创建一个 Javascript数组,它基本上是一个对象并获得一个返回的引用(您传递给您的方法)。如果您不需要在代码中稍后访问该数组(或其他数据),则第二种方法完全没问题。

答案 2 :(得分:2)

这是主观的,但在我看来,使用第二种方法更好

正如@jAndy所说,代码执行与代码的性能没有区别,但它更容易调试,更容易阅读和理解第二种方法。

答案 3 :(得分:2)

arr的内容是否会再次被使用?如果是这样,那么选项2肯定是要走的路。如果不是......这个简单的东西可能只是个人观点。

就个人而言,我不得不说选项2是更好的做法,即使有时候我犯了使用选项1.选项2更容易阅读,它&# 39;更容易理解,并且不太可能有人必须重新阅读它,因为它们在阅读你的代码(特别是新的程序员)时会在思想流中暂时混淆或丢失。出于这些原因,维护起来更容易,您和未来可能使用代码的开发人员可能会节省使用它的时间。

我能看到的唯一不利因素是产生绝对微不足道的开销,现在你有2行代码而不是1.但我认为这无关紧要,选项2的微小潜在好处超过了选项1的微小否定。

相关问题