1. 首页
  2. 热点新闻

真正要学习的编程方法是:造出自己的轮子

全文共1944字,预计学习时长4分钟

真正要学习的编程方法是:造出自己的轮子

图源Unsplash,拍摄者JonCartagena

某天,笔者给一名应聘高级职位的JavaScript开发者面试。面试中有一道题目是要求面试者编写一个能够展示HTTP呼叫的函数,若没写出来就多试几次。

由于是在白板上写,只要面试者能写出伪代码,就已经足够了。但如果他还能分享一些对该问题的理解,那就更好了。很遗憾,他没能想出一个好方法

我们看出他的紧张,决定把题改得简单些,让他将回调函数改为承诺函数。

他也失败了。

能看得出他曾见过类似编码,也或多或少知道操作的方法。写出伪代码表明他已理解概念,这本已足够了。

但是他写在白板上的代码完全没意义。他只略懂JavaScript承诺函数的概念,但并不能很好地解释它。

如果作为中级开发者,他还能蒙混过关,但要应聘高级职位,就行不通了。他如何能解析一个复杂的承诺链,并解释给别人听呢?

开发者需要不假思索地使用抽象

开发者和抽象打交道。他们要提取代码,使其变抽象,否则就要重做。所以当人们把精力放在更重要的部分上,他们理所当然地断定抽象能发挥作用。

通常来说,抽象确实能起作用。但当事情变得复杂,开发者就要真正了解抽象是如何运作的。

竞争高级开发者职位的面试者就理所当然地使用了承诺抽象。如果他在某一处发现了一段代码,他很可能知道如何使用它,但他并未真正理解概念,因而无法在面试时重现操作。

他本可以记住代码,这没那么复杂:

returnnew Promise((resolve, reject) => {

functionWithCallback((err, result)=> {

return err ? reject(err) :resolve(result);

});

});

笔者就背过代码。可能大家都背过。只要记住了一段代码,人们就能使用它,也算或多或少了解其运作的方式。

但如果那位面试者已完全理解概念,就无需记代码了。他已经从深层了解了这个代码,并轻松地再现它。

真正要学习的编程方法是:造出自己的轮子

了解自我根源

2012年,前端框架尚未成为主流,jQuery(一种JavaScript代码库)还是世界霸主。笔者当时正在读jQuery创始人约翰·莱西格的《JavaScript忍者的秘密》。

这本书教人们如何从小白一步步到创建个人的jQuery,让人们以独特的视角了解代码库创建背后的思维过程。尽管jQuery在过去几年已经淡出人们的视线,笔者还是强烈推荐这本书,很值得一读。

书中最令人触动的是,它让读者一直觉得自己也能建出jQuery。书中各步骤都很有逻辑、直截了当,让读者觉得如果自己尝试去做,也能成功创建。

当然,现实中笔者永远做不到,因为这一切太过复杂,而自己的方法太过简单、天真,根本没法成功,很快就会放弃。笔者只会想当然的认为jQuery是可行的。在此之后,可能也不会花时间思考其工作原理,只会把它当作一个黑匣子。

然而这本书改变了笔者。阅读源代码后,笔者发现许多步骤是以非常直白,甚至显而易见的方式去实施。

目前,自己想出解决措施确实是另一回事,但是阅读源代码、重新执行现存的措施的确能有所助益。

从中受到的启发和发现的模式会将人变为一名开发者。人们会明白,正使用的、像魔法一般了不起的图书馆其实没那么神奇,它不过是一个简单、有智慧的解决方案。

人们或许要花时间一步步理解编码,但作者也是这么过来的,每一步都很微小却很扎实,最终创造出编码。因此,人们能深入了解编码过程,能更自信地设计编码、创造自己的解决方案。

记得刚使用JavaScript承诺时,笔者觉得它太神奇了。在明白它们仅仅基于回调函数后,笔者对编程的看法就此改变。

这一模式本是为了摆脱回调函数,结果却……再次使用回调函数来执行?

这一切改变了笔者。这些并非是过于复杂、让人无法理解的编码片段。如果有兴趣、有意愿钻研的话,笔者也可以轻松地理解这些模式。

这才是真正要学习的编程方法。只有这样,才能成为一名更出色的开发者。

真正要学习的编程方法是:造出自己的轮子

造出自己的轮子

那就继续向前,重新改造轮子吧。编写出自己的数据绑定、自己的承诺函数、甚至自己的状态管理解决方案吧。

哪怕将来没人使用,也没关系。开发者们能从中学到东西,如果他们能在自己某个项目中使用这些编码,就已经很棒了。他们会继续研发,也更有收获。

在生产中运用解决方法并非重点,学习才是。对现有解决方案的实现进行编码,是向榜样学习的最佳途径。

真正要学习的编程方法是:造出自己的轮子

留言 点赞 关注

我们一起分享AI学习与发展的干货

如需转载,请后台留言,遵守转载规范

【本文作者】:蝼蚁网,商业用途未经许可不得转载,非商业用途转载注明出处原文链接:https://cqsoo.com/rd/29989.html

【版权与免责声明】:如发现内容存在版权问题,烦请提供相关信息发邮件至 kefu@cqsoo.com ,

并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。反馈给我们

本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。

发表评论

登录后才能评论
Copyright 2007-2019 亿闻天下网 / 渝ICP备89217412123号-1  / 本站由wordpress、阿里云、群英、百度云提供驱动力
QR code