作家
登录

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

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

'function') { 
  •  
  •       return sum + 4; 
  •  
  •     } 
  •  
  •     return sum + 2; 
  •  
  •   }, 0); 
  •  
  •  
  • let myArray = [null, { }, 15];   
  •  
  • let myMap = new Map([ ['functionKey'function() {}] ]);   
  •  
  • let myObject = { 'stringKey''Hello world' };   
  •  
  • getCollectionWeight(myArray);  // => 7 (1 + 4 + 2)   
  •  
  • getCollectionWeight(myMap);    // => 4   
  •  
  • getCollectionWeight(myObject); // => 2  
  • 问题显而易见,getCollectionWeight() 函数超等长,并且看起来像一个装满“不测”的黑盒子。可能你也发清楚明了,第一眼根本就搞不明白它要干什么。再试想一下,应用里有大年夜把如许的函数。

    在工作中碰到如许的代码,就是在浪费你的时光和精力。反之,高质量的代码不会令人不适。高质量代铝闼楝那些精细、自文档极好的函数异常易于浏览和懂得。

    Step 1:根据类型计算权重,摈弃那些“迷之数字”。

    如今,我们的目标是:把这个巨型函数,拆分为较小的、自力的、可重用的一组函数。第一步,将根据类型计算权重的代码提掏出来。这个新的函数定名为 getWeight()。

    我们再看看这几个“迷之数字”: 1, 2, 4。在不知道全部故事背景的前提下,仅靠这几个数字供给不了任何有效的信息。幸好 ES2015 许可定义静态只读引用,那你就能简单的创造几个常量,用有意义的名称,调换掉落那几个“迷之数字”。(我特别爱好“迷之数字”这个说法:D)

    我们啻新建一个较小的函数 getWeightByType(),并用它来改进 getCollectionWeight():

    1. // Code extracted into getWeightByType() 
    2.  
    3. function getWeightByType(value) {   
    4.  
    5.   const WEIGHT_NULL_UNDEFINED  = 1; 
    6.  
    7.   const WEIGHT_PRIMITIVE       = 2; 
    8.  
    9.   const WEIGHT_OBJECT_FUNCTION = 4; 
    10.  
    11.   if (value == null) { 
    12.  
    13.     return WEIGHT_NULL_UNDEFINED; 
    14.  
    15.   } 
    16.  
    17.   if (typeof value === 'object' || typeof value === 'function') { 
    18.  
    19.     return WEIGHT_OBJECT_FUNCTION; 
    20.  
    21.   } 
    22.  
    23.   return WEIGHT_PRIMITIVE; 
    24.  

    25.   推荐阅读

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

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


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

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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