FrequencyNumber作业

一、知识铺垫

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~
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容

  • 前言 对于少量的代码,我们通常能够通过肉眼或者代码编辑器,甚至控制台出现的错误,找出对应有问题的代码行,可以进行排...
    itclanCoder阅读 1,426评论 1 2
  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    w_zhuan阅读 3,609评论 2 41
  • 大家好,我是IT修真院深圳分院第3期的学员,一枚正直纯洁善良的前端程序员,今天给大家分享一下,修真院官网前端工程师...
    大大头大阅读 2,939评论 0 1
  • 通过团的洗礼,我深深地意识到要成为一个优秀的团员,身上都具有一些共同的优点。 (1)待人宽容,心胸宽阔。一般...
    李赫先生的昵称阅读 584评论 0 2
  • 每天乐死不疲在享受书中带来的各种经验和方法,决定选择一种先来尝试。比如:5分钟的“绿色锻炼”就能减缓压力、改善心...
    石阶上的青苔阅读 161评论 0 0