如何通过github提升自己

如果我们仅仅是将自己的代码commit、push到github上,那么对于我们的技术不会有太多的提升。我们所做的仅仅只是将github当成了我们的网盘。

我们每发布一个版本的时候,是不是也就意味着给用户一个新的版本——持续交付。

敏捷软件开发

显然我是在扯淡,这和敏捷软件开发没有什么关系。不过我也不知道瀑布流是怎样的。说说我所知道的一个项目的组成吧:

(1)看板式管理应用程序(如trello,简单地说就是管理软件功能)

(2)CI(持续集成)

(3)测试覆盖率

(4)代码质量(code smell)

对于一个不是远程的团队(如只有一个人的项目) 来说,Trello、Jenkin、Jira不是必需的:

你存在,我深深的脑海里

当只有一个人的时候,你只需要明确知道自己想要什么就够了。我们还需要的是CI、测试,以来提升代码的质量。

测试

通常我们都会找Document,如果没有的话,你会找什么?看源代码,还是看测试?


?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
it( "specifying response when you need it" , function (done) {
     var doneFn = jasmine.createSpy( "success" );
  
     lettuce.get( '/some/cool/url' , function (result) {
         expect(result).toEqual( "awesome response" );
         done();
     });
  
     expect(jasmine.Ajax.requests.mostRecent().url).toBe( '/some/cool/url' );
     expect(doneFn).not.toHaveBeenCalled();
  
     jasmine.Ajax.requests.mostRecent().respondWith({
         "status" : 200,
         "contentType" : 'text/plain' ,
         "responseText" : 'awesome response'
     });
});


代码来源: https://github.com/phodal/lettuce

上面的测试用例,清清楚楚地写明了用法,虽然写得有点扯。

等等,测试是用来干什么的。那么,先说说我为什么会想去写测试吧:

(1)我不希望每次做完一个个新功能的时候,再手动地去测试一个个功能。(自动化测试)

(2)我不希望在重构的时候发现破坏了原来的功能,而我还一无所知。

(3)我不敢push代码,因为我没有把握。

虽然,我不是TDD的死忠,测试的目的是保证功能正常,TDD没法让我们写出质量更高的代码。但是有时TDD是不错的,可以让我们写出逻辑更简单地代码。

也许你已经知道了Selenium、Jasmine、Cucumber等等的框架,看到过类似于下面的测试

代码来源: https://github.com/phodal/lettuce

看上去似乎每个测试都很小,不过补完每一个测试之后我们就得到了测试覆盖率GitHub

File | Statements | Branches | Functions | Lines -----|------------|----------|-----------|------ lettuce.js | 98.58% (209 / 212)| 82.98%(78 / 94) | 100.00% (54 / 54) | 98.58% (209 / 212)

本地测试都通过了,于是我们添加了Travis-CI来跑我们的测试

CI

虽然node.js不算是一门语言,但是因为我们用的node,下面的是一个简单的.travis.yml示例:


?
1
2
3
4
5
6
7
8
9
language: node_js
node_js:
     - "0.10"
notifications:
     email: false
before_install: npm install -g grunt-cli
install: npm install
after_success: CODECLIMATE_REPO_TOKEN=321480822fc37deb0de70a11931b4cb6a2a3cc411680e8f4569936ac8ffbb0ab
codeclimate < coverage/lcov.info


代码来源: https://github.com/phodal/lettuce

我们把这些集成到README.md之后,就有了之前那张图。

CI对于一个开发者在不同城市开发同一项目上来说是很重要的,这意味着当你添加的部分功能有测试覆盖的时候,项目代码会更加强壮。

代码质量

像jslint这类的工具,只能保证代码在语法上是正确的,但是不能保证你写了一堆bad smell的代码。

(1)重复代码

(2)过长的函数

(3)等等

Code Climate是一个与github集成的工具,我们不仅仅可以看到测试覆盖率,还有代码质量。

先看看上面的ajax类:


?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Lettuce.get = function (url, callback) {
     Lettuce.send(url, 'GET' , callback);
};
  
Lettuce.send = function (url, method, callback, data) {
     data = data || null ;
     var request = new XMLHttpRequest();
     if (callback instanceof Function) {
         request.onreadystatechange = function () {
             if (request.readyState === 4 && (request.status === 200 || request.status === 0)) {
                 callback(request.responseText);
             }
         };
     }
     request.open(method, url, true );
     if (data instanceof Object) {
         data = JSON.stringify(data);
         request.setRequestHeader( 'Content-Type' , 'application/json' );
     }
     request.setRequestHeader( 'X-Requested-With' , 'XMLHttpRequest' );
     request.send(data);
};


代码来源: https://github.com/phodal/lettuce

在Code Climate在出现了一堆问题


完整内容点此查看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值