• 0

  • 205

敲出简易代码的秘密 — 开发人员如何产生10倍的价值

云哥

关注云计算

3 days ago

成为一名有10倍价值的开发人员有捷径吗?如果有一个神奇的秘密,能为您打开一道通向全新、高效的软件开发世界的大门,您愿意聆听吗?

总是有怀疑者认为:"没有捷径可走!每个人都需要练习才能变得更好!" 的确如此,但是软件生产的专家本质究竟是什么?有没有一个可以令开发过程产生巨大变化的关键细节?

是! 有! 但是,即使我愿意分享这个秘密,甚至将它赠送给您并详细为您说明-可能也仍需要花10年的不断练习,才能令您完全欣赏这份简单的美。

这是我曾经经历的事情。我高中的程序设计老师曾用通俗易懂的英语给我讲了一下。但一直到了十年后,我才真正明白背后的意义。现在,我终于深深地体会到了这堂课的重要性,即使我知道这只是一堂课,而您只靠看而不实践是无法真正体会到我希望与您分享的,所以现在我使用一些示例代码逐步介绍了应用它的过程。

这个方法是平均生产率和10倍生产率之间的关键差异 。一方面,知道此方法能让您在编程期间,带来事半功倍的杠杆作用,您可以提高几个数量级的效率。另一方面,当引入新的需求抑或周围代码发生变化时,您可以藉此方法来编写更可重用且不太可能break的代码。

使生产力提高10倍的秘诀是精通抽象 。许多开发人员将"抽象"视为一个贬义词。您常常听到关于代码的建议,例如"不要抽象化"或Python成名之道就是因为其标榜的"显式优于隐式",这意味着具体要比抽象好。所有这些都是很好的建议(视情况而定)。

但是现代应用程序往往使用大量代码。如果您打印出现代十大应用程序的源代码,那么这些纸叠起来将与摩天大楼的高度相若,并且软件维护成本很高。您创建的代码越多,成本就越高。

抽象是简单代码的关键

正确的抽象可以隐藏对当前上下文不重要的细节,并减少执行相同工作所需的代码量(通常减少几个数量级),从而使代码更具可读性,适应性和可维护性。

抽象不是一条单行线。它实际上是由两个互补的概念构成的:

泛化——删除重复的部分(显而易见的部分)并将其隐藏在抽象部分的后面。

专业化——将抽象应用于特定场景,每次应对新需求仅添加需要的新内容(有意义的内容)。

请查看以下代码的建议:

🔗 gist.github.com/ericelliott…

代码天生没有错,但其中包含许多细节,对于该特定应用而言可能并不重要。

它包含正在使用的容器/传输数据结构(数组)的详细信息,它有一种状态形状依赖性,这意味着它仅适用于特定的数组及结构。

它包含迭代逻辑,这意味着,如果您需要编辑或新增其他操作就必须访问数据结构中的每个元素,甚至还需要在该代码中重复非常相似的迭代逻辑。这样就与强制重复没有分别,这可能违反DRY原则(请勿重复自己的代码)。

它代表着一个显式分配,若然不以声明的方式描述要执行的操作,这会令代码变得太冗长。 这些都没有必要,所有的这些都可以隐藏在抽象部分的后面。在这种情况下,这种通用性很强的抽象方法改变了现代应用程序的构建方式,并减少了我们需要编写的for循环的数量。

通过使用Map操作,我们可以删除显而易见的代码(指相似的代码中重复的部分)并将代码集中在有意义的代码上(指代码有所不同的部分),从而将代码简化为单一的use case:

🔗 gist.github.com/ericelliott…

一些初级开发人员有一种迷思—认为他们必须编写很多代码才能产生很多价值。相比而言,高级开发人员则清楚无需更多编写才是代码的价值。

想象一下,你作为一名程序员,在JavaScript这样的编程语言中广泛使用了Map操作,这有极大的好处。因为Map提供了详细信息,例如您要映像的数据类型,包含该数据的结构类型以及枚举数据结构中每个数据节点所需的迭代逻辑。过去十年来,它提高了我开发的每个应用程序的效率。

杰里米·阿什肯纳斯(Jeremy Ashkenas)使此类操作在JavaScript中变得很流行,并开拓到CoffeeScript中应用,为我们现在在JavaScript中理所当然的许多重要语法快捷方式铺平了道路。此外,他制作了Underscore和Backbone,Backscore产生了Lodash(至今是JavaScript中最受欢迎的功能编程实用程序),Backbone则使JavaScript中的MVC架构得以普及,并为Angular和React奠定了基础。

约翰·雷西格(John Resig)制作了非常流行和有影响力的jQuery,它形成了可重用的,封装的JavaScript模块(jQuery插件)大集合,为几年后出现的Node模块和ES6模块提供了标准。jQuery的API极有影响力,它构成了当今DOM选择API的基础。当我对React组件进行单元测试时,我仍然几乎每天都会从jQuery的API中受益。 正确的抽象是可以极大地影响生产力的强大杠杆。抽象不是一个贬义词。模块,函数,变量,类-所有这些本身就是抽象的形式,它们存在的根本原因就是为了简化抽象和抽象的构成。

没有抽象就无法构建复杂的软件。甚至汇编语言也使用抽象-指令名称,内存地址变量,子程序(如函数调用)跳转到的代码点等。现代软件是应用抽象的分层蛋糕,这些层为您提供了杠杆作用。

"给我足够长的杠杆和支撑它的支点,我将移动地球。"

—— 阿基米德(Archimedes)

简化的关键:我们追求的秘密是如何减少我们正在编写的代码数量-如何以更少的钱完成更多的工作。掌握了这一点之后,我保证您将成为10倍价值的程序员。

作者介绍 埃里克·埃利奥特(Eric Elliott)是《撰写软件》一书的作者。作为EricElliottJS.com和DevAnywhere.io的共同创始人,他教开发人员基本的软件开发技能。他建立并为加密项目的开发团队提供建议,并为Adobe系统,Zumba Fitness,《华尔街日报》,ESPN,BBC和包括Usher,Frank Ocean,Metallica等顶级唱片艺术家的软件经验做出了贡献。

🔗原文链接: medium.com/javascript-…

以上信息来源于网络,由“京东智联云开发者”公众号编辑整理, 不代表京东智联云立场

免责声明:文章版权归原作者所有,其内容与观点不代表Unitimes立场,亦不构成任何投资意见或建议。

云计算

205

Relevant articles

未登录头像

No more data