如你所见, getOnlyPrime() 异常简单,它仅仅包含低一级抽象层的步调:数组的 .filter() 办法和 isPrime() 函数。
数组的 .filter() 办法由 JavaScript 引擎供给,我们直接应用即可。当然,标准已经精确描述了它的行动。
如今你可以深刻若何实现 isPrime() 的细节中了:
为了实现 isPrime() 函数检查一个数字 n 是否为素数,只须要检查 2 到 Math.sqrt(n) 之间的所有整数是否均不克不及整除n。
有了这个算法(不算高效,然则为了简单起见,就用这个吧),我们来为 isPrime() 函数编码:
最后,最初的巨型函数,已经被转换为如下一组小函数:
- function isPrime(number) {
- if (number === 3 || number === 2) {
- return true;
- }
- if (number === 1) {
- return false;
- }
- for (let divisor = 2; divisor <= Math.sqrt(number); divisor++) {
- if (number % divisor === 0) {
- return false;
- }
- }
- return true;
- }
- function getOnlyPrime(numbers) {
- return numbers.filter(isPrime);
- }
- 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()。
- function getCollectionValues(collection) {
- if (collection instanceof Array) {
- return collection;
- }
- if (collection instanceof Map) {
推荐阅读
【51CTO.com快译】 软件开辟中的安然主题是多种多样的,安然术语对不合的团队具有不合的含义。为赞助澄清问题和避免安然问题的混淆,小编列出了A-Z最重要的安然相干词条供你参考。 A>>>详细阅读
本文标题:如何写出小而清晰的函数?(JS 版)
地址:http://www.17bianji.com/lsqh/36650.html
1/2 1