发展没有捷径?10倍效率、10倍价值的秘诀就在这里即使在软件开发领域,我们也一直幻想着会不会有一部《武林秘籍》让人快速打通任督二脉,以及进入软件开发能力和效率的新境界。“软件开发没有捷径!每个人都需要练习才能变得更好!”我们已经听过很多次了,但是那些效率提高10倍的软件生产力实践专家是如何做到的呢?有没有一点可以让人飞跃?是的!但即使我把它分享给你,并向你详细解释,你可能需要10年的时间才能掌握它并充分领略它的简单性。这就是我。我的高中编程老师用通俗易懂的语言解释了这一点,我用一些示例代码完成了应用它的过程。但直到10年后,它才真正在我心中扎根。这个秘密是平均效率和10倍效率之间的关键区别。掌握它,你可以拥有一个全新的效率水平,让你可以在新需求出现和代码环境发生变化时编写更多可重用且破坏性更小的代码。秘诀在于掌握抽象。许多开发人员讨厌“抽象”这个词,你会听到诸如“不要太早抽象”之类的建议,或者在《Python之禅》中著名的“显式优于隐式”,暗示具体优于抽象。建议本身很好,但这完全取决于上下文。现代应用程序使用大量代码。如果把十大现代应用的源代码打印出来,纸的高度可以和摩天大楼相提并论,软件的维护成本也非常高。您创建的代码越多,它的成本就越高,而抽象是简单代码的关键。JohnMaeda在《简单法则》中写道:“简单就是减去显而易见的东西,增加有意义的东西。”适当的抽象可以通过隐藏对当前上下文不重要的细节来减少执行相同工作所需的工作量。代码量(通常是数量级),从而使代码更具可读性、适应性和可维护性。资料来源:unsplash抽象不是单向概念。它实际上由两个互补的概念组成:泛化——删除重复的(明显的)部分并将其隐藏在抽象之后。专业化——将抽象应用于特定的用例,只添加需要不同的部分(有意义的)。请看下面的代码:constdoubleList=list=>{constnewList=[];for(vari=0;ilist.map(x=>x*2);初级开发人员认为他们必须编写大量代码才能产生大量价值,而高级开发人员则明白不必编写任何代码的价值。想象一下,作为一名编码员,您在JavaScript等编程语言中广泛使用map操作。映射抽象出细节,例如您要映射的数据类型、包含该数据的数据结构类型,以及枚举数据结构中每个数据节点所需的迭代逻辑。就是这样,十年来我开发的每个应用程序都提高了我的工作效率。图片来源:unsplashJeremyAshkenas使此类操作在JavaScript中流行起来,并通过在CoffeeScript中率先使用它们,为我们在JavaScript中认为理所当然的许多重要语法快捷方式铺平了道路。他制作了Underscore和Backbone,Backscore催生了Lodash(JavaScript中最流行的函数式编程实用程序功能区),Backbone普及了JavaScript中的MVC架构,并为Angular和React奠定了基础。JohnLessig创造了非常流行和有影响力的jQuery,它形成了最大的可重用、封装的JavaScript模块(jQuery插件)集合,直到几年后出现标准的Node模块和ES6模块。jQuery的选择器API影响很大,它构成了当今DOM选择API的基础。谈到对React组件进行单元测试时,我仍然可以从jQuery的selectAPI中受益。给我一个足够长的杠杆和支点,我就能举起地球。正确的抽象是一个强大的杠杆,可以显着影响生产力。抽象不是一个讨厌的词,模块、函数、变量、类,这些都是抽象的形式,它们存在的全部原因就是为了简化抽象和抽象的构造。没有抽象就无法构建复杂的软件。甚至汇编语言也使用抽象——指令名、内存地址变量、子程序(如函数调用)跳转到的代码点等。现代软件是一个分层的抽象蛋糕,每一层都给你一个不可能的支点.来源:unsplash我们追求的高效率的关键在于简单,即如何减少生成的代码量,如何用更少的资源完成更多的工作,掌握了抽象,你就掌握了秘诀。