传递太多数据作为参数是一种不好的做法吗?

时间:2018-06-11 12:51:38

标签: javascript typescript

我想知道我们将参数传递给函数的方式是否意味着什么。假设我有一个函数负责检查是否基于其内部名称对象引入了用户。

interface User {
  id: number;
  name: {
    first: string;
    last: string;
  }
}

哪种功能使用最好?

否。 1

function isUserIntroduced(user: User): boolean {
  return user.name.first && user.name.last;
}

我们在这里传递整个用户对象,但我们只需要它的内部名称数据,因此看起来更糟糕的解决方案,因为其他数据(想象用户比上面的接口大得多)不需要。

否。 2

function isUserIntroduced(name: UserName): boolean {
  return name.first && name.last;
}

UserName是用户界面中名称对象的接口(只是为了缩短它)。现在我们只传递我们需要的数据,对吗?但是在我们称之为此功能的每个地方,呼叫都会自行this.isUserIntroduced(user.name)而不是this.isUserIntroduced(user)。问题是函数的名称现在是否适合其目的。那么它会检查用户是否被引入但事实上它只是在名称周围运行。所以它的最佳名称应该是“isTheNameValid”或其他东西。

否。 3

function isUserIntroduced({name}: User): boolean {
  return name.first && name.last;
}

这在我看来是最好的。调用此函数的速度与No.1相同,但在函数内部,我们只能访问我们需要的数据。不幸的是,在编译之后,第3号代码看起来像这样:

function x(_a) {
    var name = _a.name;

    return name.first && name.last;
}
事实上,即使我们无法访问其余数据,它仍然存在于内存中。

0 个答案:

没有答案