面向对象,更适合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的灵活和高效,可以打造成 ...
随机推荐
- Android的Notification的简介-android学习之旅(四十一)
Notification简介 Notification位于手机饿最上面,用于显示手机的各种信息,包括网络状态,电池状态,时间等. 属性方法介绍 代码示例 package peng.liu.test; ...
- FND Debug Log(FND_LOG_MESSAGES)
之前每个模块记录日志的方式都不同,都会把日志写到不同的文件中,对于User来说很麻烦,需要记住很多的配置,现在越来越多的模块使用FND Logging来存储日志,比如WIP,RCV,OAF...FND ...
- OC——第五天NSSArray /NSDicti…
1.oc中常用的集合(容器)有: 1.NSArry 数组:2.NSDicitionary 字典:3.NSSet 集(不常用) 数组:NSArry 继承自NSObject ,不可变的数组,用于管理一系列 ...
- 《java入门第一季》集合框架引入与面试题
注:在开始的几篇集合介绍里,不包含泛型的概念.泛型在讲述所有集合后再加入进去. 集合的由来: 我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我 ...
- LCS问题(最长公共子序列)-动态规划实现
问题描述: 问题] 求两字符序列的最长公共字符子序列 注意: 并不要求子串(字符串一)的字符必须连续出现在字符串二中. 思路分析: 最优子结构和重叠子问题的性质都具有,所以要采取动态规划的算法 最长公 ...
- PDA(Windows Mobile)调用远程WebService
之前用模拟器测试过调用远程的WebService,发现总是提示"无法连接到远程服务器"的错误,不管是Windows Mobile6.0 还是6.5都是一样,按照网上的办法,改注册表 ...
- linux grep 和 sed使用
http://www.cnblogs.com/zhuyp1015/archive/2012/07/01/2572289.html 听说过sed 和 awk 比较强大,专门学习了一下. 使用这些shel ...
- getJSONObject与optJSONObject的区别,结合源码分析
*json解析常见问题: getJSONObject与optJSONObject的区别,下面结合源码和案例来分析当我们使用这两周方法来解析数据时,哪种比较好. 源码分析: //使用getJSONObj ...
- ITU-T Technical Paper: IP网络测量模型
本文翻译自ITU-T的Technical Paper:<How to increase QoS/QoE of IP-based platform(s) to regionally agreed ...
- Linux - 简单好用的计算器 bc
如果在文本模式当中,突然想要作一些简单的加减乘除,偏偏手边又没有计算器!这个时候要笔算吗? Linux有提供一支计算程序,那就是bc.你在命令列输入bc后,屏幕会显示出版本信息, 之后就进入到等待指示 ...