抽象与可维护性和可拓展性的代码关系
2016-10-09 15:24
176 查看
在我还是学生时候写东西的时候,可能完成了某个功能就会兴奋不已,我还记得我去写第一个切换效果的时候,那时候的代码是这样的。
哦,可能还不是这样,那时候还是用js,不是用的是jq,但是表达的意思都差不多。代码一看,好整洁。如果我们用数据库的观念去看这样一件事,这就叫做冗余。但是这样的功能已经实现了啊。这时候就想,我要是有10条,100条这样的,我还不写死啊。然后我们会这样。
这样一看,我靠,少了好多啊,此时有一万条,我也只用这个,只要改下里面的<号右边的数不就行了?是的,但是我们还是懒,懒到我连数字都不想换,于是呼,我们的代码又变成了这样。
此时我们想,终于大功告成了吧,再也不要修改什么了,不管多少条了。突然,我们发现又有一处功能需要用这样的切换效果,难道,我们还要写这样的两遍嘛?比如这样
我们会对重复一样的东西总感到厌恶,于是我们又会这样
是的,此时我们已经开始会使用闭包来简化我们的操作了,但是,此时,我们还是在一个项目里面,刚好,有个同学说,哎,同学,把你写的借我用下呗。于是乎,我们又走向了插件的那条路。
那接下来我们谈谈抽象,什么是抽象?我觉得更像是一种模型。比方说,我们每个人都用我去指代自己,每个人说我的时候,我们都知道他说的是他,不是某个特定的人,就是本身。其实抽象本身都是我们用在继承这里的,但是在普通的问题解决方式的时候,我们也可以将这种思维展现出来。
比方说这样一个例子,我们希望点击的时候清除其他的样式,但是自己的样式要添加。我们不用关系是点了谁,然后让谁的样式去添加,比如我们点击第一个,那么第一个样式显示,点击第二个,第二个样式显示,其实换一种思路就是,点谁谁显,就像人人都可以用我去指代自己。其实this的用法很强大。继承都靠他。。。。
$('.button:eq('+0+')').on('click',function(){}); $('.button:eq('+1+')').on('click',function(){}); $('.button:eq('+2+')').on('click',function(){}); $('.button:eq('+3+')').on('click',function(){});
哦,可能还不是这样,那时候还是用js,不是用的是jq,但是表达的意思都差不多。代码一看,好整洁。如果我们用数据库的观念去看这样一件事,这就叫做冗余。但是这样的功能已经实现了啊。这时候就想,我要是有10条,100条这样的,我还不写死啊。然后我们会这样。
for(var i=0;i<4;i++){ $('.button:eq('+i+')').on('click',function(){}); }
这样一看,我靠,少了好多啊,此时有一万条,我也只用这个,只要改下里面的<号右边的数不就行了?是的,但是我们还是懒,懒到我连数字都不想换,于是呼,我们的代码又变成了这样。
for(var i=0;i<$('.button').length;i++){ $('.button:eq('+i+')').on('click',function(){}); }
此时我们想,终于大功告成了吧,再也不要修改什么了,不管多少条了。突然,我们发现又有一处功能需要用这样的切换效果,难道,我们还要写这样的两遍嘛?比如这样
for(var i=0;i<$('.button').length;i++){ $('.button:eq('+i+')').on('click',function(){}); }for(var j=0;j<$('.tbutton').length;j++){
$('.button:eq('+j+')').on('click',function(){});
}
我们会对重复一样的东西总感到厌恶,于是我们又会这样
var selectClick=["button","tbutton"]; for(var i=0;i<selectClick.length;i++){ (function(i){ $('.' + selectClick[i]).on('click',function(){ })})(i) }
是的,此时我们已经开始会使用闭包来简化我们的操作了,但是,此时,我们还是在一个项目里面,刚好,有个同学说,哎,同学,把你写的借我用下呗。于是乎,我们又走向了插件的那条路。
那接下来我们谈谈抽象,什么是抽象?我觉得更像是一种模型。比方说,我们每个人都用我去指代自己,每个人说我的时候,我们都知道他说的是他,不是某个特定的人,就是本身。其实抽象本身都是我们用在继承这里的,但是在普通的问题解决方式的时候,我们也可以将这种思维展现出来。
$('.button').on('click',function(){ $('.type').removeClass('selected'); $(this).addClass('selected'); })
比方说这样一个例子,我们希望点击的时候清除其他的样式,但是自己的样式要添加。我们不用关系是点了谁,然后让谁的样式去添加,比如我们点击第一个,那么第一个样式显示,点击第二个,第二个样式显示,其实换一种思路就是,点谁谁显,就像人人都可以用我去指代自己。其实this的用法很强大。继承都靠他。。。。
相关文章推荐
- 什么代码叫简洁~什么叫"可维护性,可读性,抽象 = 好!"
- 一.OC基础之:1,OC语言的前世今生 ,2,OC语言入门,3,OC语言与C的差异,4,面向对象,5,类和对象的抽象关系,6,类的代码创建,7,类的成员组成及访问
- 线程经典代码二,(同步情况下的生产者/消费者关系)
- 代码自动生成和抽象
- 类与类关系的UML图与代码表现
- 关于几何关系的代码说明
- UML中类之间的关系及其Java代码例子(转)
- 关于几何关系的代码说明
- 继承,抽象,接口之间的关系和区别
- 从代码抽查到大型软件的可维护性
- 类与类关系的UML图与代码表现
- 从代码抽查到大型软件的可维护性
- [原创]Object/DataSet Relational Mapping(对象/数据集关系映射)补充代码1
- 请问如何可以获取代码中函数与函数的调用关系.
- 类与类关系的UML图与代码表现
- 主题: 类与类关系的UML图与代码表现
- 继承,抽象,接口之间的关系和区别
- 初学hibernate时,多对多测试代码,中间建了一张关系表。
- 线程经典代码一,(未同步情况下的生产者/消费者关系)
- 其实添加数据也可以这样简单——表单的第三步抽象(针对UI及后置代码)