



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件英才网 软件行业驰名招聘网站一位非计算机专业程序员的故事:21个嵌套回调大约21个月之前,那时候我还不知道什么是回调(callback),我建立了我的第一个网页。为了纪念这21个嵌套的回调,我觉得现在是回顾这个网页的时候了。在那时我有个可能有点老套的习惯,就是在人文课程或者家庭旅游的时候在笔记本上信手涂鸦一番。在某次暑期旅行中我创作了一组我自己觉得超酷的三角形图案。于是我觉得把它做成电子版是在那个夏天值得下功夫的事情。我还憧憬着这套东西让我在Tumblr上的形象显得超酷无比。我开始找了些计算机专业的朋友们,问他们是否可以给我指点一下方向。我得到的大把的答复可以总结为“google一下”,潜台词就是:“如果你google完了还不知道咋弄,你就是低能儿。”(点击可查看大图)“我想在我的网页上做个三角形不过Google看起来没给我什么好的答案。”“不,你要用CSS triangle 作为关键字去Google。看见了没?这很简单。”“不好意思CSS和三角形有什么关系?”对话记录通常到此嘎然而止,或者是到“CSS就是你用来修饰你的HTML的东西。”(从这些交流过程中我总结出一个结论:程序猿们总是在比着看谁能把最多的事情称为“简单的”)每次对话完之后,我都觉得自己真是极品的废物。不过我后来发现了如何用一个div(那玩意代表啥东西?)和几行CSS来做出一个三角形形状,还有一些具有很酷的变换颜色效果的网站,可以复制下来做我的三角形图案。I我知道你现在肯定很好奇我(这么一个编程小白)是怎么拼凑出这些来的。好吧,这里就是我的HTML的概貌:1234567891011121314151617 .我要悲哀地告诉你们,下面还有165行类似的东西,另外配套的JavaScript代码也是一样重叠起来的,它就是个平行四边形。我后来又知道了有一种叫jQuery的东西,我可以用它的“API”里某个叫“animate”的东西来逐步改变我的三角形的各种属性。我发现如果我调用一次$(#something).animate( opacity: 0 )就会让一个三角形消失。在我的头脑中觉得,如果我想让我的20行三角形一个个地消失,我需要把这样的代码写上20遍,这是符合逻辑的。通过拷贝和粘贴内容到JavaScript文件里的起始位置的方式,我还“ imported | 导入”了jQuery。我曾经在其他的网页上看见它在不同的文件里,但我决定不管是否合理,也要把我所有的JavaScript都放到一个文件里。如果我打算自欺欺人,我可以说我选择了最优化的编程方式:用最难的风格。1234567891011121314151617181920212223242526272829303132333435363738394041$(.disappear).click(function() $(#row20).animate(opacity:0, 100, function()$(#row19).animate(opacity:0, 100, function()$(#row18).animate(opacity:0, 100, function()$(#row17).animate(opacity:0, 100, function()$(#row16).animate(opacity:0, 100, function()$(#row15).animate(opacity:0, 100, function()$(#row14).animate(opacity:0, 100, function()$(#row13).animate(opacity:0, 100, function()$(#row12).animate(opacity:0, 100, function()$(#row11).animate(opacity:0, 100, function()$(#row10).animate(opacity:0, 100, function()$(#row9).animate(opacity:0, 100, function()$(#row8).animate(opacity:0, 100, function()$(#row7).animate(opacity:0, 100, function()$(#row6).animate(opacity:0, 100, function()$(#row5).animate(opacity:0, 100, function()$(#row4).animate(opacity:0, 100, function()$(#row3).animate(opacity:0, 100, function()$(#row2).animate(opacity:0, 100, function()$(#row1).animate(opacity:0, 100)你可以在这里看到完整的源代码和最终产品。(我甚至经历了对齐每一个回调方法的缩进的麻烦,这在Windows Notepad上可是不容小觑的绝技)注意以上JavaScript的结尾是一套壮观的 )。当看到那些三角形按我的意图消失又出现时,我真是太高兴了。代码本身就像壮观的ASCII瀑布,或者是高级西班牙语课本里常见的印加文化的灌溉系统。这些代码是有效的,我在Google上也没看到谁说这些代码错的一塌糊涂,或者说任何看到我代码的程序员都会永远禁止我和我的子孙接近互联网。等到有个真正的软件工程师来看我的三角形代码的时候,我已经看过足够多有关SICP(计算机程序的构造和解释)材料并意识到我的代码既恐怖又可怕。“不过,初学者总是会犯这样的错误,对吧?”我窘迫地试探着问道。“不,程序猿是不会干这种事的。”他倒不是挖苦的口气。我当时就想把话题引到分子和细胞生物学上去。不过他随后又补充说:“没有哪个程序猿会写出这样的代码,因为他们根本就没有那个耐心。”不管他的第二段话是不是肺腑之言,我对整个事情的感觉好了一些。不管怎样,后来我还是羞愧地把我的三角形刨坑埋了。随着时间一天天一月月地过去,它们最终成为愚昧的起步之旅。“嗨,你这俩钟头都花在调试你的CoffeeScript代码里的空白字符问题了?想当年我花了一天时间来写21个嵌套的回调和200行相同的HTML。”这个故事通常会产生一种自我调侃的搞笑效果。我认识到,自三角形项目以来,我写的每一行代码都只会让我在“google一下”、调试代码,和五花八门的编程主题等方面更强,而这都是因为我亲身去经历了每一个看似愚蠢的项目。上个星期我花了点时间快速重写了我的三角形。你可以在这里看到它,在响应性和动态生成效果上令人自豪,这些是我在当年毫无概念的(当然了,我也只能牺牲了老版本里明显的优点)。我保持了最初的设计精髓,即用div生成三角形,用jQuery来做动画效果。既然我快要离开安全、绿树环抱的伯克利的围墙,进入真实的世界(也希望使我过去对代码的犯罪记录安息),我希望给初出茅庐的发明家和害羞的创作者,留下我的三角形中一到三个角作为遗产。编程很难。绝不要因为你不如你旁边的人善于“去Google一下”就心情沮丧。绝不要让那些言必称黑客马拉松的假行家忽悠你,让你放弃做出下一个猫咪的微博或者公共厕所点评网的机会。就算是最蠢的点子(例如尝试做多边形消失和重现的动画)都会帮助你作为一个程序猿不断提高。学习编程很大程度上是学会如何学习,而最好的学习方法就是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年教师招聘考试化学学科专业知识试卷(化学教学实践与评价改革)
- 文言文知识拓展:古代诗歌鉴赏与写作
- 日记下雨记200字(11篇)
- 一年级写景作文春天的朋友150字(12篇)
- 《政治权力运行的基本规则:高中政治教学教案》
- 一年以后450字8篇
- 2025年小学五年级数学期末冲刺试卷名校同步测试卷解析与答案
- 血液科常见疾病诊疗概要
- 校园的一角:教室窗外的风景描写(9篇)
- 压力指数大调查600字7篇
- 呼伦贝尔农业无人机项目可行性研究报告(范文)
- LTPS-LCD工艺流程简介资料
- 初中生物总复习(七八年级上下册)
- (完整版)10KV配电室安装工程施工方案
- 幼儿卫生保健试题和参考答案解析
- 锅炉基础知识及水泥余热发电锅炉性能1
- 辽宁省建筑施工三类人员安全生产考核合格证变更申请表
- (完整版)家庭亲密度与适应性量表
- DOE操作作业指导书
- 初三自主招生简历范文
- 侧索硬化症的概述
评论
0/150
提交评论