FrequencyNumber作业

作者: AFei0 | 来源:发表于2017-05-19 17:16 被阅读11次

一、知识铺垫

1.TDD

  • 简介
    TDD是测试驱动开发(Test-Driven Development)的英文简称,是敏捷开发中的一项核心实践和技术,也是一种设计方法论。
  • 原理
    在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。
  • 基本思路
    通过测试来推动整个开发的进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程。
    步骤:

2.Git

这部分内容我很久之前单独简单写了一下。
可以看http://www.jianshu.com/p/00641507c1d2

3.Node.js

Node.js是一个Javascript运行环境(runtime)。实际上它是对Google V8引擎进行了封装。V8引 擎执行Javascript的速度非常快,性能非常好。Node.js对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好。
PS:这是百度出来的解释,个人理解就是说是个很好的运行环境,用来做前端开发的东东,但是感觉还是很抽象,可能跟知识存储太少有关,所以这部分就稍微提一下。
npm:
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:

  • 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
  • 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
  • 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

PS:这部分还是比较抽象,我是按照别人的步骤一步一步安装的
详见:
http://www.runoob.com/nodejs/nodejs-npm.html

4.Jasmine

Jasmine 是一个简易的JS单元测试框架。Jasmine 不依赖于任何浏览器、DOM、或者是任何 JavaScript 而存在。它适用于所有网站、Node.js 项目,或者是任何能够在 JavaScript 上面运行的程序。

使用jasmine测试Node项目的教程:
http://www.cnblogs.com/zhaoxiaoji/p/jasmine-node.html

这里有个单独的可以直接测试的框架 :Jasmine-standalone-2.5.2,是一个文件夹形式,打开后的文件目录是:


二、FrequencyNumber

1、要求:

它可以帮我处理一段字符串信息,这段字符串信息是由英文单词组成,每两个单词之间有空格,处理结果也为一段字符串,这个字符串应该每行只显示一个单词和它的数量,并且按出现频率倒序排列

2、 大致步骤

1、安装nodejs (我安装的Nodejs时,npm就一起安装了)

用这个安装程序按步骤安装就好了



然后得到一个文件夹

2、使用npm全局安装Jasmine Module

在cmd命令框中输入

npm install -g jasmine

3、初始化框架(这是我自己理解的意思)

新建一个文件夹,在当前文件夹下依次输入命令:

npm init (这时文件夹中会出现一个package.json)
npm install express (这时文件夹中会出现一个node-modules文件夹)
jasmine init (这时文件夹中会出现一个spec文件夹)
jasmine examples(这时会出现一个lib)

完成后的文件夹:

  • Player.js 用于编写核心代码
  • PlayerSpec.js用于编写是针对与Player.js编写的测试用例
  • 由于对javascript语言不熟悉,所以代码多数借鉴于他人。

4、编写代码

由于对javascript语言不熟悉,所以代码多数借鉴于他人。


main.js:
```javascript`
main.js(=Player.js)
function main(words) {
if(words!=='')
{
let wordArray=words.split(/\s+/)
let groupWords=group(wordArray)
sort (groupWords);
return groupWords.map((e)=>format(e.word,e.count)).join('\r\n')
}
return ''
}
var group=function(wordArray)
{
return wordArray.reduce((array,word)=>
{
let entry=array.find((e)=>e.word===word);
if(entry)
{
entry.count++
}
else
{
array.push({word:word,count:1})
}
return array
},[])
}
var sort =function(groupWords){
groupWords.sort((x,y)=>y.count-x.count)
};
var format=function(word,count)
{
return word+' '+count
}
module.exports = main

***
**PlayerSpec.js:**
```javascript
describe("Word Frequency", function() {
  var main = require('../../lib/jasmine_examples/main.js')


  it('returns empty string given empty string',function(){
    var result=main('')
    var expect_string=''
    expect(expect_string).toEqual(result)
  })

  it('returns string given one word',function()
  {
    var result=main('it')
    expect(result).toEqual('it 1')

  })

  it('returns string given two different words',function()
  {
    var result=main('it was')
    expect(result).toEqual('it 1\r\nwas 1')
  })

  it('returns string given duplicated different words',function()
  {
    var result=main('it it was')
    expect(result).toEqual('it 2\r\nwas 1')
  })

  it('returns string given duplicated different words need to be sorted',function()
  {
    var result=main('it was was')
    expect(result).toEqual('was 2\r\nit 1')
  })

  it('returns string given words splited by multiple spaces',function()
  {
    var result=main('it   was')
    expect(result).toEqual('it 1\r\nwas 1')
  })

  it('returns string given full words ',function()
  {
    var result=main('it was the age of wisdom it was the age of foolishness it')
    expect(result).toEqual('it 3\r\nwas 2\r\nthe 2\r\nage 2\r\nof 2\r\nwisdom 1\r\nfoolishness 1')
  })



})

测试结果

5、使用Git提交

依次使用 :

三、心得体会(杂谈)

   四月份的时候其实就花了好多时间去看npm nodejs jasmine...这些,但进展不多,后来慢慢就没有理会这个作业,直到前天5.17到实验室教练说两天后必须交,然后在之前的基础上又花了不少的时间去弄懂这些的联系,终于我大概理解了他们之间的关系==。这段时间对于我来说真的很忙,于是教练让我列了一个时间表来看自己近三天的时间是怎么安排的,列完后我发现其实中间还是有时间可以挤出来,同时也让自己意识到了时间管理的重要性,要想高效率的完成一件事,就要合理分配时间,并且在这段时间中专注力只在眼前的事上。
   在学习npm nodejs jasmine这些的初期,我真的是很懵逼,只有靠百度,但是百度出来的东西是零零散散的,而且里面很多语言是我现阶段看不懂的(就又得百度),教练让我们用思维导图的模式去学习,我觉得这个再理清思路上是有用的。后面就慢慢看这些的教程,别人写的博啊,也就慢慢领会到,由于现在自己的知识储备不够,理解一些东西还是有一定难度,也只能明白个大概。
   通过这次学习我觉得更重要的是对自己学习能力的一个提升吧,以前的大部分问题一百度就能直接出来结果,这次就相当于“拼图”,得到的都是一小块一小块,得自己去找联系,然后再拼起来。
   其实还有其他的感悟,就先说这么多了    bye~

相关文章

  • FrequencyNumber作业

    一、知识铺垫 1.TDD 简介:TDD是测试驱动开发(Test-Driven Development)的英文简称,...

  • TTD-Practise-FrequencyNumber

    Frequency Number 题目要求 我想要一个 nodejs 小程序,它可以帮我处理一段字符串信息,这段字...

  • TTD-基础编程练习-FrequencyNumber

    练习题目需求: 我想要一个nodejs小程序,它可以帮我处理一段字符串信息,这段字符串信息是由英文单词组成,每两个...

  • 今天先不更

    补作业补作业补作业补作业补作业补作业补作业补作业补作业补作业补作业补作业补作业补作业补作业补作业补作业补作业补作业...

  • 作业作业作业

    出外听课两天,小必的学习没过问。 早晨,小必的数学作业没完成,很多没完成:优化设计,数学书,小灵通,都没完成。 中...

  • 作业作业作业

    头疼的厉害,太阳穴绷得紧紧的。躺了一个多小时了,也不见好转。每当这个时候,一场大觉就能让我彻底放松。可是心不静,怎...

  • 作业作业作业

    1,我的作业 写好了文章,倒也没发的欲望,这是我的作业,作业。 只是想着把一切都准备好,明天再发。听说发文很多O推...

  • 作业作业作业

    @所有人 各位家长:学生对待作业的态度就是对待学习的态度。态度决定一切!老师们在检查作业过程中发现有不写的、有偷工...

  • 11-17

    作业1: 作业2: 作业3: 作业4: 作业5: 作业6: 作业7: 作业8: 作业9: 作业10: 作业11: ...

  • 11月17

    作业1 作业2 作业3 作业4 作业五 作业6 作业7 作业8 作业9 作业10 作业11 思考

网友评论

    本文标题:FrequencyNumber作业

    本文链接:https://www.haomeiwen.com/subject/dpygzttx.html