刚看了一下群记录,从4月27日到今天,我转向Js已经有半个月了,特在此做一个小结。
有这么几点感触特别深:
总而言之,我走进了一个新的世界,以异步编程风格为主导、轻量级开发方式为特点的新世界。这是我没有料到的。我开始是因为angularjs框架、和json的原生支持这两个原因尝试JS的,但现在看来,要想学好Javascript,还有相当多的东西需要学习。
这段时间发现了一些比较喜欢的项目:
还有今天开始比较感兴趣的基于纤程、在异步模型上实现同步模型的一些项目,因为还没细看,不列出。
我认为js的开发应该是同步异步结合,因为两者都有比较明显的适用情况。有时候你会觉得异步用起来很方便很自然,有时候又觉得同步很自然,所以不要强迫自己去在任何情况下都去拥抱异步。如果能通过一些项目或其它手段支持同步,将代码写得更简洁易读,岂不是更好?
这段时间花在学习写单元测试的时间比较多(当然其中大部分时间是因为异步的原因,测试代码不好写,总算找个好点的解决方案),但是觉得很值得。自从在scala中使用了scalatest以后,我就明白了:人们是否喜欢写单元测试,在很大程度上是由“写测试的难度”和“写测试的舒适度”决定的。像我,在写java项目时,也不喜欢写测试,因为感觉很痛苦。但在scala项目中,不写测试自己都觉得缺少了乐趣。像Javascript这样的动态语言,如果没有单元测试作为保证,写出来的代码基本上没人敢用。同时,由于javascript的动态语言特性,只要有一个设计良好的测试框架,写测试也将会是一件容易且开心的事情。这些天终于写出了对mongoose的一些单元测试,总体感觉还不错,除了异步模型这块,代码嵌套得实在让人郁闷。
如果我当年在学ruby on rails的时候,就能体会到这一点,我想我就不会半途而废了。当时觉得自己写出来的代码特别不踏实,总有种悬在半空的感觉,就是因为没有写测试。最后还是因为受不了这种感受,而转向了scala。
另一件让我觉得欣喜的事情,就是Emacs。终于从笨重的eclipse中解脱出来,时刻能感受到emacs的轻盈与极好的扩展性。需要什么功能,只需要到网上一搜,把几行代码拷贝到.emacs文件中,一重启就有了。虽然快捷键很多,我还不怎么熟练,但我想它将会是一直陪伴我的好朋友,早在大学就应该学它了。
我发现自己渐渐喜欢上了动态语言,这种轻松的感觉是以前在写java/scala代码时,从未有过的。我想我会继续学习Javascript,以后有机会再重拾ruby on rails。