如何在Coffeescript中提高工作效率?

时间:2012-01-17 10:18:53

标签: javascript coffeescript

我想改进我的Coffeescript编码风格。当我在Scala中编程时,我可以在一两个小时内编写一个模块,运行它并且只有一些我可以快速识别和修复的小错误。

在Coffeescript中,我花了大约相同的时间在前面,但我最终得到了大量的小错误,这些小错误本来是由静态类型检查程序捕获的,我最终不得不编译,重新加载浏览器,逐步完成一些代码,添加一些断点等。这是一种令人愤怒的经历,需要更长的时间。

由于缺少接口和许多其他OO功能,抽象和封装功能要困难得多。

是否有设计模式取代OO通常提供的封装/抽象?或者是否有关于如何以更多Coffeescript-y方式思考(或如何使用原型方法解决问题)的入门/指南?

你做了什么来提高Coffeescript(或Javascript - 甚至是任何动态类型语言)的效率?

3 个答案:

答案 0 :(得分:7)

如果您来自一个静态类型,以类为中心的语言,如Java或Scala,那么学习JavaScript / CoffeeScript将是一个挑战。编译器几乎没有帮助你,这意味着发现小错误而不是几秒钟需要几分钟。

如果这是您的主要瓶颈,那么我建议采用更多测试驱动的编码方法。使用像QUnit这样的库为您开发的每个功能编写小测试。如果使用得当,这种风格可以提供与静态编译器相同的好处,而不会影响动态语言的灵活性。

答案 1 :(得分:1)

不要直接使用咖啡脚本。从原型和Javascript OO学习核心概念。 IMMO您可以同时学习这两种方法,但如果您首先获得Vanilla Javascript,您将获益更多。根据我的个人经验,如果你不理解原型遗传(很容易陷入错误),那么课堂上的Coffee Script语法糖就会成为陷阱。

咖啡脚本调试在工具方面仍然不是一个完全解决的问题,我知道它可以完成的唯一方法是编写测试(当你刚开始时很痛苦)或者查看生成的代码(至少对于更隐蔽的错误)。

答案 2 :(得分:1)

对我来说也很奇怪;就我而言,来自C / C ++背景。

点击给我的是,通过对工作环境进行一些调整,您可以显着缩短迭代时间。我们的想法是减少它,以便您可以用很小的代码编写代码并非常频繁地测试代码。

缺乏编译时间检查:你会习惯的。像重要的空白区域一样,缺少编译时间类型检查只会在几周后消失。很难说是多么确切,但至少我可以告诉你,它确实发生在我身上。

缺乏界面:这是一个棘手的问题。在大型系统中获得更多帮助以提醒您实现整个接口会很不错。如果您发现自己确实失去了很多时间,那么您可以编写自己的运行时检查,并在适当的位置插入它们。例如。如果您向中央经理注册您的对象,那么现在是确保对象有资格获得他们提交的角色的好时机。

一般来说,记住你有很好的反思能力是很好的。

缺乏封装:鉴于coffeescript为原型方案实现了一个非常好的类包装器,我假设你的意思是缺少私有变量?如果您觉得有必要,我可以通过多种方式隐藏客户的详细信息;通常是为了阻止自己在未来射击我的脚。关键通常是把东西塞进封口里。

另外,看看Object.__defineGetter__ / Object.defineProperty? Getters和setter在这些情况下可以提供很多帮助。

减少迭代时间:

我在咖啡中使用内置文件观察器来编译更改时的脚本。再加上TextMate能够在丢失焦点时保存所有打开的文件,这意味着测试是从textmate切换到chrome / firefox并进行刷新的问题。很快。

在node.js项目中,我已经将我的视图设置为只是编译和即时服务,所以即使文件观察器也是多余的。它们在发布时被缓存,但在调试模式下,它们总是从磁盘重新加载,重新编译,遇到错误时我只是为它们提供服务。所以现在每隔几分钟我就切换到浏览器,点击刷新,看看我的测试运行,或编译错误。