管理大量代码的提示?

时间:2009-05-26 01:02:19

标签: javascript

我的项目似乎变得越来越大,我的一些课程长达数千行。每次我想要进行更改时,都很难搜索它们。

我发现JavaScript并不像其他一些编程语言那样简单明了。因此,当课程变成几千行时,我就会有阅读它的麻烦。

我已经尝试将它分成多个文件,但是然后你就分开了,这似乎不对。例如,如果类中的每个方法都使用全局变量,那么您只能在该类的一个文件中找到全局变量。

另外,如果我想使用来自100个不同.js文件的JavaScript代码,我最终会得到类似的内容......

<script type="text/javascript" src="Scripts/classes/Node.js"></script>
<script type="text/javascript" src="Scripts/classes/Queue.js"></script>
<script type="text/javascript" src="Scripts/classes/DblyLinkedList.js"></script>
  .... 97 more lines like this

虽然,我认为可能会有一些我可以做的事情......

<script type="text/javascript" src="Scripts/.../*.js"></script>

或类似的......是吗?

任何人都有任何关于管理代码的提示,因为它达到极端?

有关清理JavaScript代码的提示也会有所帮助。

7 个答案:

答案 0 :(得分:2)

将JS分解为单独的文件有一些主要的缺点,主要是因为你强迫网络浏览器为每个文件单独发出请求。

您是否已将所有文件分开,但为每个仅包含必要文件的项目制作单个文件“捆绑”?这可以通过脚本自动完成。

此SitePoint文章可能会帮助您入门:http://www.sitepoint.com/blogs/2007/04/10/faster-page-loads-bundle-your-css-and-javascript/

答案 1 :(得分:1)

  • (a)让你的课程更短[甚至 虽然这意味着更多 文件],
  • (b)保持“全文” 索引“为了搜索速度和 操作(不知道任何IDE 专门支持Javascript 这样,但强大的编辑喜欢 Emacs,Vim,Eclipse或TextMate肯定 这样做),
  • (c)按层次分组 所以你的网页可以只有几个 “上层”的<script>标签 脚本每个都只是拉入 几个“下层”的。

哦,而且,当然,虔诚地将一切都置于一个良好的变革控制系统(SVN,Mercurial等)之下,否则你的生活肯定会非常痛苦: - (。< / p>

答案 2 :(得分:1)

您可能希望将相关类组合在一起打包到包中,其中每个包都是一个文件。查看YSlow有关效果的最佳做法。

答案 3 :(得分:0)

嗯,一个好的编辑器总是很有用,因为它会为你提供文件中定义的所有函数的快捷方式。

其次,请确保您没有查看代码墙。缩进,空格和换行是一个很好的帮助。

你的缩进非常严格。 2个空格是2个空格,总是(或者你使用的任何数量)

如果你把你的{置于声明之下,那么总是把它放在那里,毫无例外)

有关如何对齐文本的明确规则将有很大帮助。

我不知道最后一件事......我不确定浏览器是否可以使用这种通配符。

答案 4 :(得分:0)

<script type="text/javascript" src="Scripts/.../*.js"></script>

不起作用,此外,在分割相关文件时,您最终会遇到一个有趣的问题,因为您无法保证它们将按照您预期的顺序下载。

不幸的是,你最好的选择是一个很好的IDE,可以生成一个便于导航的大纲。我将Eclipse与Spket和/或Aptana一起使用,但无论如何管理都是您正在寻找的。

编辑:关于将js拆分为多个文件的更快速说明。尽可能避免使用它。每个单独的文件表示单独的http请求。减少所需的请求数量可能会对站点性能产生巨大影响。

答案 5 :(得分:0)

AvatarKava的建议是合理的。在单独的文件中工作并在构建时连接它们。但是,我还建议你看看你的班级结构。一个“数千行长”的课程听起来不太健康。你确定你的课程没有承担太多的责任吗?是否没有任务可以运送到其他单一责任类?这有助于提高代码的清晰度,远远超过分析文件的方法。

答案 6 :(得分:0)

同样的建议适用于大多数语言......

尽可能避免使用全局变量。您通常可以通过包装静态变量或使用对象来获得所需的行为。

if (foo == undefined)
   var foo

尽可能使用命名约定,这样您只需通过读取变量或函数名称即可跟踪事物。无论是使用grep还是使用grep,或者使用intellisense获得IDE。

将东西拆分成目录。在名为“classes”的目录中有100个文件是没有用的。例如,您可能有队列,列表,树等的集合目录。如果您有很多,您甚至可能有一个树子目录或列表子目录等。 然后,您还可以为该目录创建一个全局包含...只是一个名为collections.js的文件,其中包含该目录中的所有文件。当然,你必须小心分解,因为你不想包含你永远不会使用的文件。