目录
- Git学习
- node.js学习
- 用Nodejs和Git完成TDD编程
Git学习
Git是什么
Git是一款免费、开源的分布式版本控制系统Git的安装
从https://git-for-windows.github.io下载,然后按默认选项安装即可Git命令学习
http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html
node.js学习
- node.js是什么
简单的说 Node.js 就是运行在服务端的 JavaScript - 安装配置
http://www.runoob.com/nodejs/nodejs-install-setup.html - jasmine框架安装和使用
http://www.cnblogs.com/dubaokun/p/3398694.html
用Nodejs和Git完成TDD编程
- TDD是什么
测试驱动开发,英文全称Test-Driven Development,简称TDD,是一种不同于传统软件开发流程的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行。
- 为什么要用TDD编程
使用TDD编程有助于编写简洁可用和高质量的代码,有很高的灵活性和健壮性,能快速响应变化,并加速开发过程
- TDD编程的基本过程
测试驱动开发的基本过程如下:
① 快速新增一个测试
② 运行所有的测试(有时候只需要运行一个或一部分),发现新增的测试不能通过
③ 做一些小小的改动,尽快地让测试程序可运行,为此可以在程序中使用一些不合情理的方法
④ 运行所有的测试,并且全部通过
⑤ 重构代码,以消除重复设计,优化设计结构
- 用Nodejs基于TDD的方式完成 Frequency Number
划分
划分单词
分组
排序
多个空格
测试
describe("Frequency Number",function(){
var main=require('../helpers/main');
it("returns empty string given empty string",function(){
var result =main('');
expect(result).toEqual('');
});
it("returns string given one word",function(){
var result =main('he');
expect(result).toEqual('he 1');
});
it("returns string given two different words",function(){
var result =main('he is');
expect(result).toEqual('he 1\r\nis 1');
});
it("returns string given duplicated words",function(){
var result =main('he is he');
expect(result).toEqual('he 2\r\nis 1');
});
it("returns string given duplicated words need to be sorted",function(){
var result =main('he is is');
expect(result).toEqual('is 2\r\nhe 1');
});
it("returns string given words splited by multiple spaces",function(){
var result =main('he is');
expect(result).toEqual('he 1\r\nis 1');
});
})
实现
var format = function(word,count){
return word + ' '+ count;
}
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;
},[]);
};
function main (words) {
if(words !== ''){
let wordArray = words.split(/\s+/);
let groupedWords = group(wordArray);
groupedWords.sort((x, y)=> y.count - x.count);
return groupedWords.map((e)=>format(e.word, e.count)).join('\r\n');
}
return ''
}
module.exports=main;
版本(前面三个版本因操作不熟练未提交成功)