作家
登录

如何写出小而清晰的函数?(JS 版)

作者: 来源: 2017-08-11 14:47:32 阅读 我要评论

本文以 JavaScript 为例,介绍了该若何优化函数,使函数清楚易读,且加倍高效稳定。

软件的复杂度一向在持续增长。代码质量对于包管应用的靠得住性、易扩大性异常重要。

然而,几乎每一个开辟者,包含我本身,在职业生活中都见过低质量的代码。这器械就是个坑。低质量代码具备以下极具杀伤力的特点:

  • 函数超等长,并且塞满了各类混乱无章的功能。
  • 函数平日有一些副感化,不仅难以懂得,甚至根本没法调试。
  • 暧昧的函数、变量定名。
  • 脆弱的代码:一个小的变革,就有可能出乎料想的破坏其他应用组件。
  • 代码覆盖率缺掉。

它们听起来根本都是:“我根本没法懂得这段代码是若何工作的”,“这段代码就是一堆乱麻”,“要修改┞封一段代码实袈溱太难了” 等等。

我就曾碰到过如许的情况,我的一个同事因为无法持续将一个基于Ruby 的 REST API 做下去,继而离职。这个项目是他大年夜之前的开辟团队接办的。

修复现有的 bug ,然后惹人了新的 bug,添加新的特点,就增长了连续串新 bug,如斯轮回(所谓的脆弱代码)。客户不欲望以更好的设计重构全部应用,开辟人员也做出明智的选择——维涌近况。

好吧,这种事儿经常产生,并且挺糟糕的。那我们能做点什么呢?

起首,须要谨记于心:只是让应用运转起来,和尽心包管代码质量是两个完全不合的事。一方面,你须要实现产品需求。然则另一方面,你应当花点时光,确保函数功能简单、应用易读的变量和函数定名,避免函数的副感化等等。

函数(包含对象办法)是让应用运转起来的齿轮。起首你应当将留意力集中在他们的构造和整体构造上。这篇文┞仿包含了一些异常好的示例,展示若何编写清楚、易于懂得和测试的函数。

如今该进入下一级抽象。

1. 函数应当很小,异常小

假设如许一个场景,须要实现一个函数,用于计算 array、map 或 通俗 JavaScript 对象的权重。总权重可经由过程计算各成员权重获得:

  • null 或者 不决义变量计 1 点。
  • 根本类型计 2 点。
  • 对象或函数计 4 点。

例如,数组 [null, ‘Hello World’, {}] 的权重如许计算:1(null) + 2(string 是根本类型) + 4(对象) = 7。

Step 0: 最初的大年夜函数

我们大年夜最糟的实例开端。所有的逻辑都被编码在函数 getCollectionWeight() 中:

  1. function getCollectionWeight(collection) {   
  2.  
  3.   let collectionValues; 
  4.  
  5.   if (collection instanceof Array) { 
  6.  
  7.     collectionValues = collection; 
  8.  
  9.   } else if (collection instanceof Map) { 
  10.  
  11.     collectionValues = [...collection.values()]; 
  12.  
  13.   } else { 
  14.  
  15.     collectionValues = Object.keys(collection).map(function (key) { 
  16.  
  17.       return collection[key]; 
  18.  
  19.     }); 
  20.  
  21.   } 
  22.  
  23.   return collectionValues.reduce(function(sum, item) { 
  24.  
  25.     if (item == null) { 
  26.  
  27.       return sum + 1; 
  28.  
  29.     } 
  30.  
  31.     if (typeof item === 'object' || typeof item === 
     1/7    1 2 3 4 5 6 下一页 尾页

      推荐阅读

      安全36计 你需要了解的那些安全术语

    【51CTO.com快译】 软件开辟中的安然主题是多种多样的,安然术语对不合的团队具有不合的含义。为赞助澄清问题和避免安然问题的混淆,小编列出了A-Z最重要的安然相干词条供你参考。 A>>>详细阅读


    本文标题:如何写出小而清晰的函数?(JS 版)

    地址:http://www.17bianji.com/lsqh/36650.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)