作家
登录

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

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

function getOnlyPrime(numbers) { 
  •  
  •   return numbers.filter(isPrime); 
  •  
  •  
  • getOnlyPrime([2, 3, 4, 5, 6, 8, 11]); // => [2, 3, 5, 11]  
  • 如你所见, getOnlyPrime() 异常简单,它仅仅包含低一级抽象层的步调:数组的 .filter() 办法和 isPrime() 函数。

    数组的 .filter() 办法由 JavaScript 引擎供给,我们直接应用即可。当然,标准已经精确描述了它的行动。

    如今你可以深刻若何实现 isPrime() 的细节中了:

    为了实现 isPrime() 函数检查一个数字 n 是否为素数,只须要检查 2 到 Math.sqrt(n) 之间的所有整数是否均不克不及整除n。

    有了这个算法(不算高效,然则为了简单起见,就用这个吧),我们来为 isPrime() 函数编码:

    最后,最初的巨型函数,已经被转换为如下一组小函数:

    1. function isPrime(number) {   
    2.  
    3.   if (number === 3 || number === 2) { 
    4.  
    5.     return true
    6.  
    7.   } 
    8.  
    9.   if (number === 1) { 
    10.  
    11.     return false
    12.  
    13.   } 
    14.  
    15.   for (let divisor = 2; divisor <= Math.sqrt(number); divisor++) { 
    16.  
    17.     if (number % divisor === 0) { 
    18.  
    19.       return false
    20.  
    21.     } 
    22.  
    23.   } 
    24.  
    25.   return true
    26.  
    27.  
    28. function getOnlyPrime(numbers) {   
    29.  
    30.   return numbers.filter(isPrime); 
    31.  
    32.  
    33. getOnlyPrime([2, 3, 4, 5, 6, 8, 11]); // => [2, 3, 5, 11]  

    getOnlyPrime() 很小也很清楚。它只大年夜更低一级抽象中获得须要的一组步调。

    只要你按照这些规矩,将函数变的简洁清楚,复杂函数的可读性将获得很大年夜晋升。将代码进行精确的抽象分级,可以避免出现大年夜块的、难以保护的代码。

    3. 应用简洁的函数名称

    对于应用骆驼风格的函数名称,以小写字母开端: addItem(),saveToStore() 或者 getFirstName() 之类。

    因为函数都是某种操作,是以名称中至少应当包含一个动词。例如 deletePage(),verifyCredentials()。须要 get 或 set 属性的时刻,请应用 标准的 set 和 get 前缀:getLastName() 或 setLastName()。

    1. function getCollectionValues(collection) {   
    2.  
    3.   if (collection instanceof Array) { 
    4.  
    5.     return collection; 
    6.  
    7.   } 
    8.  
    9.   if (collection instanceof Map) { 

    10.   推荐阅读

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

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


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

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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