【问题标题】:Javascript code readability - split into smaller functions or not? [closed]Javascript 代码可读性 - 是否拆分成更小的函数? [关闭]
【发布时间】:2018-04-18 07:14:08
【问题描述】:

一个简单的问题,但只是想得到一些建议。

我正在使用 Angular 构建一个简单的税收计算器应用程序,目前我的所有计算工作正常,但是在代码设计方面,我不知道我的做法是否正确。所以...

第一次下蛋的时候,我有一些代码可以计算出退休金金额

this.superAnnuationAmount = (this.incomeAmount / 100) * this.superAnnuationPercentage

很简单。但是现在我来清理我的代码,我认为如果我这样做,它看起来和阅读会更好......

this.superAnnuationAmount = this.getSuperannuationAmount(this.incomeAmount, this.superAnnuationPercentage);

private getSuperannuationAmount(income: number, percentage: number): number {
    return (income / 100) * percentage;
}

现在我知道它几乎没有任何区别,除了我猜它使它更具可读性。对于更复杂的功能,我也将采用这种方法。但是在我的 IDE 中,我遇到了 Method can be more static 的 linting 错误。

怎样才能更静态?将大函数放入更易读的小函数中是正确的方法吗?

【问题讨论】:

  • @Pac0 这个问题不一样,他也在问其他的东西,但这个问题的标题确实可以更好地说明。
  • 同意 - 将更新标题
  • 我删除了我的重复标志

标签: javascript angular function typescript ecmascript-6


【解决方案1】:

由于您的函数不使用对象上的实例变量(它不使用this),您可以将其设为静态

private static getSuperannuationAmount(income: number, percentage: number): number {
    return (income / 100) * percentage;
}

不过,你不必这样做——它只是你的短绒向你袭来。

我认为更干净的方法是使用 getter:

public get superAnnuationAmount(): number {
    return (this.incomeAmount / 100) * this.superAnnuationPercentage;
}

现在您可以使用常规的superAnnuationAmount,它会使用实例变量进行计算。

【讨论】:

  • getter 的使用看起来很有趣 - 现在将研究这个
【解决方案2】:

老实说,如果我是必须维护您的代码的开发人员,我会更喜欢第一个版本,因为它足够清晰,特别是因为 superAnnuationAmount 变量,explains 右侧数学表达式的意图.在第二个版本中,我不会一眼看到所有信息,逻辑现在在两个不同的地方,关于可读性的奖励并不能证明分散的合理性(如果只有需要进行计算的地方)。

【讨论】:

  • 我听到了你的意见 - 谢谢你的意见 :)
【解决方案3】:

您好,它可能与this question 有关。 静态方法存在于类而不是对象实例上。请提供类结构以获取更多详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-20
    • 2018-06-06
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 2023-02-24
    • 1970-01-01
    • 2011-03-20
    相关资源
    最近更新 更多