【问题标题】:jslint - Should we tolerate misordered definitions?jslint - 我们应该容忍错误的定义吗?
【发布时间】:2011-07-19 09:03:14
【问题描述】:

更新:原来这是重复的:JSLint: Using a function before it's defined error

我们在我们的项目中新采用了 jslint,正如它所承诺的 - jslint 开始伤害我们的感情。但不仅如此,它还让我们质疑它的许多规则。老实说,对我来说,它在某种程度上类似于 ANSI C 编程风格。这是一个:

JS Lint: 'someMethodFoo' 在定义之前被使用。

这是因为我们使用了自上而下的编码风格:每个文件首先包含最重要的方法。该方法的实现被分解为“子”方法调用,以保持代码干净和结构良好。这意味着在大多数 情况下,方法是在定义之前使用的。事实上,我认为这是一种良好的做法,它使代码对未来的读者更容易理解,因此更易于维护。

为什么 JS Lint 要我们把它颠倒过来?

我们可以通过使用 --undef 标志简单地关闭此选项。但是有反对的理由吗?例如,顺序会影响口译员的表现吗?在每个浏览器迟早都会从解释器切换到编译器的时代,这是否重要?

【问题讨论】:

    标签: jslint


    【解决方案1】:

    这只是一个约定,code conventions page 没有解释为什么要这样执行

    所有函数都应该在使用前声明。内部函数 应该遵循 var 语句。这有助于弄清楚什么 变量包含在其范围内。

    我们可以这样理解:

    所有函数都应该在使用前声明。这有助于使 清楚哪些功能可用以及它们提供哪些功能。

    我认为建议这样做是为了让阅读代码的人有机会在使用函数之前了解函数的作用。如果您更喜欢自上而下的方法,我认为这是完全可以接受的,您应该使用 --undef 标志来反映您的约定。毕竟,该工具的主要目标是帮助您:)

    编辑:this 关于 SO 的问题可能有助于阐明为什么它作为警告有用

    【讨论】:

    • 谢谢。好像我的是重复的。
    猜你喜欢
    • 2012-05-09
    • 2010-12-23
    • 2011-01-27
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 2014-06-24
    相关资源
    最近更新 更多