您的位置: 首页 > 技术文档 > 网络编程 > 你的编程语言可以这样做吗?
回到列表 AJAX打造博客无刷新搜索
用户名:
密 码: 忘记密码
注册会员 游览论坛 论坛帮助
 你的编程语言可以这样做吗?

作者:emu 时间: 2006-08-15 文档类型:翻译 来自:joelonsoftware.com
浏览统计 total:2784 | year:2784 | Quarter:2784 | Month:2784 | Week:181 | today:30


你的编程语言可以这样做吗? [2]

你的编程语言可以这样做吗?(map/reduce的js示范)

有一天,你在浏览自己的代码,发现有两大段代码几乎一样。实际上,它们确实是一样的——除了一个关于意大利面(Spaghetti)而另一个关于巧克力慕思(Chocolate Moose)。

  // 一个小例子:
 
  alert("偶要吃意大利面!");
  alert("偶要吃巧克力慕思!");

嗯,这个例子碰巧是用javascript写的,不过你就算不懂JavaScript,应该也能明白它在干什么。

拷贝代码不好。于是,你创建了个函数

  function SwedishChef( food ){
      alert("偶要吃" + food + "!");
  }

  SwedishChef("意大利面");
  SwedishChef("巧克力慕思");

Ok,这只是一个很小很小的例子而已,相信你能想像到个更实际一点的例子。这段代码有很多优点,你全都听过几万次了:可维护性、可读性、抽象性 = 好!

现在你留意到有另外两段代码几乎跟它们一模一样,除了一个反复调用一个叫BoomBoom的函数,另一个反复调用一个叫PutInPot的。除此之外,這两段代码简直没什么两样:

  alert("拿龙虾");
  PutInPot("龙虾");
  PutInPot("水");

  alert("拿鸡肉");
  BoomBoom("鸡肉");
  BoomBoom("椰子酱");

现在要想个办法,使得你可以將一个函数用作另一个函数的参数。这是个重要的能力,因为你更容易将框架代码写成一个函数(emu注:还记得template method模式吧?)。

  function Cook( i1, i2, f ){
      alert("拿" + i1);
      f(i1);
      f(i2);
  }

  Cook( "龙虾", "水", PutInPot );
  Cook( "鸡肉", "椰子酱", BoomBoom );

看看,我们居然把函数当成调用参数传递了!

你的编程语言能办到吗?

等等……假如我们已经有了PutInPot和BoomBoom这些函数的具体实现代码(而且又不需要在别的地方重用它们),那么用内联语法把它们写进函数调用里面不是比显式的声明这两个函数更漂亮吗?

  Cook( "龙虾",
        "水",
        function(x) { alert("pot " + x); }  );
  Cook( "鸡肉",
        "椰子酱",
        function(x) { alert("boom " + x); } );

耶,真方便!请注意我只是随手创建了个函数,甚至不用考虑怎么为它起名,只要拎着它的耳朵把它往一个函数里头一丢就可以了。

出处:joelonsoftware.com
责任编辑:moby

上一页 下一页 你的编程语言可以这样做吗? [2]

◎进入论坛网络编程版块参加讨论

相关文章 更多相关链接
xml留言本
论动物符号的象征语言
写出高质量软件的75条体会
OOP编程实例——音乐播放器
Fireworks 8 语言插件
全网 本站 论坛
热门搜索:CSS Fireworks 设计比赛 网页制作 Dreamweaver Studio8 Flash
站点最新 站点最新列表
虫虫手工:项链出炉记
coldraw 中表格的终极解决方案
标准的N种死法
Flex2 学习笔记 Ⅰ
AS+JS的Flash网站无刷新定位技术
百事我创Flash动画征集大赛
2006 网络动画"金闪客"年度盛典
常见可用性错误——交互错误
常见可用性错误——表单组件错误
夏日·梦
栏目最新 栏目最新列表
coldraw 中表格的终极解决方案
标准的N种死法
Flex2 学习笔记 Ⅰ
AS+JS的Flash网站无刷新定位技术
Photoshop 表现国画中岩石
巧用Illustrator绘制图案
样式表:链接,还是嵌入?
事件侦听器示例汇总
Photoshop 鼠绘可爱斑点狗
你的编程语言可以这样做吗?
>> 分页 首页 前页 后页 尾页 页次:1/21个记录/页 转到 页 共2个记录

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

本文现有 1 条评论 评分:- llllllllllllllllllll + 评分人数: 1 ,平均分: 5.00


wowhhz Publish at 2006-8-16 13:49:06 评分5
有意思,简明实用
您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
Don't Make Me Think 第2版
《Flash第一步系列》
《交互设计之路》
《Dreamweaver 从基础到实践》
《色彩管理》
《情感化设计》
《GUI设计禁忌》