我不是一个专业的程序员,但拥有一个工程领域的PhD,多年来我已经自学了许多编程语言。在过去的几年里,我主要使用Ruby,现在我正在学习JavaScript,这样我就可以做一些web编程了。
我想和很多人一样,我对JavaScript的学习有一个负面的印象,但是当我学习语言(通过克罗克福德的“JavaScript: Good Parts”一书)时,我发现语言的功能部分真的很整洁。几年前我涉足了Haskell,所以我对函数式编程有了一些想法。
我想知道专业程序员是如何使用这种语言的。在用JavaScript编写时,您是坚持一种范式,还是像使用瑞士军刀一样使用它,并针对不同的问题使用不同的范例?现在是否有一种“最受欢迎”的方式来使用它,还是仅仅取决于程序员、问题、公司等?
发布于 2012-05-23 05:30:00
唯一一个JavaScript不愿意使用的范式是一个过于锁定的范例。例如,我觉得Java最令人不快的地方之一是,任何事情都必须由类发起,每个类都在一个文件中,在代码和enem之间存在着难以逾越的封装障碍。我指的是您团队中的其他开发人员或开发人员客户。
当一切都是强制的OOP,IMO,你最终得到的是很多开发人员(我没有说全部或大部分),他们实际上不知道OOP最初应该解决什么问题。因此,是的,权衡是,有时它可以是一种触摸神秘,但我们得到了一切。如果你的船不顾一切地漂浮在水面上的话,我们可以建造工厂来模仿经典的OOP (克罗克福德承认,他从来没有真正使用过他写的那个)。我们会被关闭。我们得到了一流的函数,我们可以到处乱扔。见鬼,我们甚至可以从对象中重新应用方法,就好像它们是其他对象的方法一样。如果被虐待的话很可怕。当明智地使用时,威力惊人。你有足够的灵活性和绳子来吊死自己,而不是因为害怕最低的公分母会把自己绞死而把选择权抢走。
当然,JavaScript站在另一边的问题是代码汤。你必须建立某种范例,否则你最终得到的是一些不太适合下一个人阅读、使用或修改的东西。好消息是,你几乎可以选择任何你想要的范例。在我当前的工作中,我发现更大的应用程序对象结构,它们作为工厂、仓库和事件驱动接口的事件路由器,支持完全解耦,或者类似于传统对象的东西,但是记录每次为调试目的而触发方法时传递的事件名称、源和参数。我继续使用JQuery将跨浏览器的理智和疯狂的开发速度引入到细节的DOM中,但之后我将JQ汤埋在我自己的应用程序体系结构中,这样后端开发人员就不必从$('#someId > .someClass :first').click(function(e){....中弄清楚前端到底发生了什么。但是,即使你的第一次尝试结构看起来像一堆切分饼干的JavaBeans,最好还是从一些东西开始,而不是什么都不做。只是不要对继承计划发狂。我提过这个。到处都是。因为这是你在任何语言中所能做的最可怕的事情,而拥有比传统的OOP更少的东西并不是什么大不了的事情。
JS的真正诀窍是找到正确的结构平衡和一贯的实现接口,并给予人们足够的灵活性以各种方式使用您的东西,而不会将您的代码变成笨拙的、不可读的、混乱的。幸运的是,丑陋的东西很容易用JS包装、改装和装饰。那你怎么用呢?你学会了。真的很好。然后编写代码,根据需要探索、发明、断言或吸收其他开发模式。我真正喜欢JS的是,我通常会发现,如果我把一些想法放在设计上,我就可以吃蛋糕了。坚持干,松散耦合和消除锅炉板作为优先事项和任何范例,你采取的JS很可能不会臭气,当你知道你的方式对语言足够好。但还有很多东西要学。部分原因是规范不断增加新特性,偶尔也会删除旧的、讨厌的特性,而每一个新浏览器都是一种冒险。
关于功能和面向对象的问题,我个人广泛地使用了这两种方法。我认为大多数有经验的JS开发人员都这样做,甚至没有真正意识到他们正在做一些不寻常的事情。我的对象和构造函数为体系结构和倾向于相互交互的块提供信息。JS的功能特性使那些对象如何交互成为可能,这是我想要的任何东西。
发布于 2012-05-23 00:16:37
我使用了一个好的JavaScript框架,比如jQuery或原型。这应该会改变你对JavaScript的负面印象。这些年来,它已经走了很长的一段路,而且肯定值得一看。
发布于 2012-05-23 01:14:31
几年前,我想说的是,JavaScript是用来让东西在屏幕上闪现的,是用来制作很酷的鼠标预告片(对当时的一般开发者来说),也是为了教开发者耐心。
然后Ajax变得流行起来,这使得Javascript能够处理数据。Javascript是一个真正的痛苦,因为那时它非常初级,当我们有Visual这样的工具为.NET语言提供很好的智能感知时,与几乎没有的Javascript相比,这是一次非常糟糕的体验。我的大多数同龄人当时都讨厌javascript。
然后jQuery..。几年前,我告诉老板我们最好学习JavaScript (我C#,他是VB),因为jQuery把所有的工作都从JavaScript中拿出来,给了我们一些非常酷的功能。
现在我们有了像Node.js这样的东西,它都是JavaScript,客户端和服务器都是。我不想谈这个..。我不知道我对此有何感想。但无论如何,这肯定是JavaScript在网络上的完全具体化。
我记得我听说过Enyo和WebOS,它基本上是JavaScript,而Windows 8非常友好,就像前面提到的..。
我差点忘了提JSON..。JSON是传递数据的一种很酷的方式。同样,在客户端工作也很不错,DB的用户似乎也很喜欢这项技术
所以你要用吗??我想说这就像一把瑞士军刀..。有些人可以说,当与一个好的webservice层配对时,JavaScript是你所需要的全部(S)。我认为肯定还有一个强大的平台基础(asp.net和其他.)的空间。但每个人都有自己的
海事组织,我想它在客户端的位置。这对用户界面更新是很好的。很适合做“部分”回发,并访问本地数据存储(在客户端)。现在使用HTML 5,我确实看到它是"Flash杀手“。我们可能会再次看到导论和跳过按钮..。哈哈..。那是凉爽的日子..。
对于单页应用程序和类似的应用程序。它绝对应该被考虑与框架之一,如脊骨或其他(有基调)。安全是一件需要记住的事情,也包括延迟。但根据手头的项目,这些都会有不同的重要性。
所以,我想说的是,这是一种偏好和手头的应用程序的混合。
https://softwareengineering.stackexchange.com/questions/149736
复制相似问题