面向对象,更适合JavaScript
面向对象程序设计是软件开发中一个很庞大很复杂的话题,它并不是仅仅学会类、继承、封装、多态这些面向对象编程语法元素就表示掌握的,这些语法元素只是实现面向对象程序的工具, 就像砖块、水泥能搭建小屋,也能造高楼大厦,然而在这里重要的不是砖块水泥,而是其它因素。所以,利用面向对象技术写程序,语法元素不是关键,关键在于组织这些语法元素的方法和技巧。
这些方法和技巧,比如说那威名远播的23个面向对象设计模式,各种面向对象设计原则,如面向接口编程、封装变化、高内聚、低耦合等等,都有很多相关书籍介绍。
众所周知,使用面向对象技术的目的是为了写好代码,使代码易读、易维护、足够灵活。
然而,使用Java、C#之类的血统纯正的面向对象程序设计语言却非常难以实践面向对象的方法与技巧, 即使代码中随处可见类、封装、继承、多态,代码质量还是非常差,有面向对象之形,无面向对象之实。
这之中的原因在于,通常使用Java、C#语言写的代码逻辑非常简单,这两门语言在web领域使用居多,而web领域的程序多数逻辑只是对数据库的增删查改,这些逻辑根本没有面向对象技巧大显身手的余地,俗话说,实践出真知,既然没有办法实践,自然也没有办法很好的掌握, 试问一下,有谁做个网站能用到复杂的设计模式的,如果真有,大多数情况下也是强行使用。 因此,如果想通过写普通的Java网站,学好面向对象技术,很难, 事倍功半。
然而, 在网站的另一端,面向对象技术却能大显神通,那就前端JavaScript领域。理论上讲,JavaScript都不能算面向对象程序设计语言,它没有真正的类,也没有继承,要实现这些特性必须通过另类的模拟。不过这并没有问题,事实上面向对象的精髓并不是class、extends这些关键字,而是使用这些关键字的方法,只要功力深厚,一草一木皆为武器;只要掌握方法,即使没有这些关键字,通过模拟这些关键字也能写出像样的面向对象程序。
为什么面向对象设计应用,在纯正的面向对象设计语言中,还不如山寨的JavaScript? 这是因为前端JavaScript程序的逻辑足够复杂,当然,我说的JavaScript程序不是在网页上弹出一个对话框、让网页中某张图片在隐藏和显示之间切换,我说的JavaScript程序是指那些复杂的特效,一个独立的特效代码都在千行以上的那种,比如说功能完善的日历控件,支持拖拽节点以及动态加载数据的导航树形菜单、富文本编辑器、各种具有可玩性的JS小游戏等等, 这类特效都有大量的代码,且逻辑复杂, 写这些程序时,如果只是简单粗暴的代码堆砌, 那极有可能无法最终完成任务,即使完成也毫无维护性可言,这种情况下就强烈需要面向对象这样的技术来简化代码的复杂性,这也是为什么面向对象程序设计技巧与方法在前端JavaScript能很好实践的原因。
总而言之,如果你是一个后端程序员,想提高自己编写高质量代码, 然而却苦于没办法实践书上所学的面向对象技术,那么不妨去写写JavaScript, 当你面对的不是数据库的增删查改,而是合理的组织巨量DOM元素,使之达到你想要的效果, 那么,面向对象不可或缺, 你不用不行,而不是你想用却没有场景可以使用。使用JavaScript,会让你更有写程序的感觉,因为你不再是数据的搬运工。
面向对象,更适合JavaScript的更多相关文章
- Redux/Mobx/Akita/Vuex对比 - 选择更适合低代码场景的状态管理方案
近期准备开发一个数据分析 SDK,定位是作为数据中台向外输出数据分析能力的载体,前端的功能表现类似低代码平台的各种拖拉拽.作为中台能力的载体,SDK 未来很大概率会需要支持多种视图层框架,比如Vue2 ...
- Ember.js和Vue.js,哪种框架更适合你?
JavaScript最初是为Web应用程序而创建的.随着前端技术的发展,比起纯JavaScript 脚本,大多数开发人员更喜欢使用基于JavaScript的框架来开发Web应用,如Vue.React等 ...
- RAID5和RAID10,哪种RAID更适合你(上)
[IT168 专稿]存储是目前IT产业发展的一大热点,而RAID技术是构造高性能.海量存储的基础技术,也是构建网络存储的基础技术.专家认为,磁盘阵列的性能优势得益于磁盘运行的并行性,提高设备运行并行度 ...
- 转:NoSQL更适合担当云数据库吗
在过去几十年,关系型数据库管理系统一直是数据管理的主要模型,随着Web应用数据规模的显著增长,NoSQL系统逐渐引起关注.领域专家Sherif Sakr分析指出,NoSQL具备的优势(能够水平扩展数据 ...
- 阅读:RAID5和RAID10,哪种RAID更适合你
阅读:RAID5和RAID10,哪种RAID更适合你-------------------------------------------2013/10/06 存储是目前IT产业发展的一大热点,而RA ...
- 十大豪门推送sdk,哪个更适合你
转自:http://jingyan.baidu.com/article/d621e8da0fd7042865913ff5.html 推送,使得开发者可以即时地向其应用程序的用户推送通知或者消息,与用户 ...
- CloudStack和OpenStack该如何选择(如果准备选择OpenStack,请做好hack的准备。CloudStack的底层功能已经做的很完善了,更适合商用)
国内做云计算的目前基本会在OpenStack和CloudStack中做一个选择.CloudStack 和OpenStack选哪一个,要根据自己的业务模式和研发力量来定. 作者:来源:cloudstac ...
- 看板与Scrum:哪个更适合你的团队?
敏捷是理想型指标和原则,看板和Scrum是帮助团队坚持敏捷原则并完成工作的基本框架.本文详细介绍了在Scrum和看板之间做出选择时要考虑的关键因素,以及如果我们无法做出决定时该怎么办. Scrum和看 ...
- modSecurity和Naxsi哪个更适合Nginx搭建WAF
nginx增加modsecurity模块 modsecurity原本是Apache上的一款开源waf,可以有效的增强web安全性,目前已经支持nginx和IIS,配合nginx的灵活和高效,可以打造成 ...
随机推荐
- 推荐一个计算机视觉图书:python计算机视觉编程
编辑部的主页:好像没啥用 http://shop.oreilly.com/product/0636920022923.do 每章的代码,github上面的:中文版 https://github.com ...
- mongoDB常见的查询索引(三)
1. _id索引 _id索引是绝大多数集合默认建立的索引 对于每个插入的数据,MongoDB会自动生成一条唯一的_id字段. 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
- leetcode 104 Maximum Depth of Binary Tree二叉树求深度
Maximum Depth of Binary Tree Total Accepted: 63668 Total Submissions: 141121 My Submissions Question ...
- 开源网络监控管理系统:OpenNMS
OpenNMS是一个开源的企业级基于Java/XML的分布式网络和系统监控管理平台.OpenNMS是管理网络的绝好工具,它能够显示网络中各中终端和服务器的状态和配置,为方便地管理网络提供有效的信息. ...
- 【翻译】使用Ext JS设计响应式应用程序
原文:Designing Responsive Applications with Ext JS 在当今这个时代,用户都希望Web应用程序无论在形状还是大小上,既能在桌面电脑,也能在移动设备上使用.使 ...
- Vim/Vi实用技巧(第二版)
Vim/Vi实用技巧 1.导入文件 :r [文件名] #导入到当前编辑的文件中 如 :r /etc/inittab 文件上部为/etc/services文件,下部为/etc/inittab文件 2.执 ...
- 一张图解释NIO原理
- Android监听电池状态
监听电池状态只需要接收Intent.ACTION_BATTERY_CHANGED的广播即可,当电池状态发生变化时会发出广播. 1.运行状态如下图: (1)连接USB时的状态 (2)断开USB时的状态 ...
- Oracle E-Business Suite Maintenance Guide Release 12.2(Patching Utilities)
更多内容参考: http://docs.oracle.com/cd/E51111_01/current/acrobat/122ebsmt.zip Oracle Patch Application As ...
- RHEL6非交互式工具sshpass和expect安装
RHEL6非交互式工具sshpass和expect安装 1 sshpass 在rhel6.4上,没有sshpass的软件包,无法采用yum方式安装.从源码编译安装非常简单. 1) 下载sshpass源 ...