面向对象,更适合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的灵活和高效,可以打造成 ...
随机推荐
- Hessian源码分析--HessianProxy
在上一篇博客 Hessian源码分析--HessianProxyFactory 中我们了解到,客户端获得的对象其实是HessianProxy生成的目标对象,当调用目标对象的方法时,会调用Hessian ...
- 最简单的基于FFmpeg的内存读写的例子:内存转码器
===================================================== 最简单的基于FFmpeg的内存读写的例子系列文章列表: 最简单的基于FFmpeg的内存读写的 ...
- ubuntu权限管理常用命令
1.chmod 第一种方式 chomd [{ugoa}{+-=}{rwx}] [文件或者目录] u 代表该文件所属用户 g 代表该文件所属用户组 o 代表访客 a 代表所有用户 +-=分别表示增加权限 ...
- 调试bootmgr&winload vista&win7 x86&x64
设置调试bootmgr 1.以管理员权限运行cmd.exe 2.执行以下命令 3. 参照我的另一篇文章<win8 + vmware + windbg 双机调试 >中的第1.3步,建立wi ...
- Android使用SimpleAdapter
SimpleAdapter的使用步骤如下: 声明ListView,并进行初始化操作 准备数据集,一般用list来实现,当然也可以使用数组 为listview适配simpleadapter 如下代码: ...
- Java实现堆的封装,进行插入,调整,删除堆顶以完成堆排序实例
简介 堆对于排序算法是一个比较常用的数据结构,下面我就使用Java语言来实现这一算法 首先,我们需要知道堆的数据结构的形式,其实就是一个特殊的二叉树.但是这个二叉树有一定的特点,除了是完全二叉树以外, ...
- 【翻译】了解Ext JS 5的小部件
原文:Understanding Widgets in Ext JS 5 在Ext JS 5,引入了新的"widgetcolumn",支持在网格的单元格中放置组件.同时,还在Ext ...
- Spring BeanFactory getBean 源码剖析
首先看一张时序图 最开始,一切都来自这里: public static void main(String[] args) { ApplicationContext context = new Clas ...
- uploadify在火狐下上传不了的解决方案,java版(Spring+SpringMVC+MyBatis)详细解决方案
由于技术选型的原因,在一个产品中,我选择了uploadify,选择它的原因是它有完善的技术文档说明(http://www.uploadify.com/documentation/),唯一不足的是 ...
- mysql 字符集更改与导入数据
mysql 字符集更改与导入数据 mysqldb经常有中文乱码的问题,解决起来很恼火.其实所有开发和数据库统一为一种编码就可以了: utf8. 1 下面修改mysql的编码 1) 永久修改. 在/et ...