百科问答小站 logo
百科问答小站 font logo



作为 IT 从业人员,你觉得有什么工具大大提高了你的工作效率? 第1页

  

user avatar   caoglish 网友的相关建议: 
      

我也谈谈自己的一些提高开发体验经验,就说软件工具部分。

这里的经验基本上都是冲着一个原则去的:凡是需要重复做的,必须使用自动化工具完成。

1. 版本控制

一般自己的项目使用git,公司开发规定用svn。反正不管怎么样,版本控制少不了。有个说法,没有版本控制的项目,就等于没有。

版本控制的好处太多了,用过的人都知道。等于历史版本 + 代码备份了。这个提到的很多,就不多说了。

2.单元测试工具

写程序需要验证,如果快速知道新的代码和过去的写的代码不冲突,这个时候单元测试就能起到作用了。

当然单元测试的功能不仅仅是这个:

  • 验证代码正确性和可靠性
  • 验证新代码不和原有代码冲突
  • 验证自己代码不合团队其他人员代码有冲突
  • 验证合并是否有冲突
  • 验证快速
  • 可以作为API使用实例
  • 跨平台和跨环境测试

这个是现代开发流程的基本模块之一,没有单元测试的项目,不是一个合格完整的项目。

有了单元测试,就再也不用担心在大项目中,自己做的小修改有会有什么大影响了。开发压力大大减少

PHP的我用的是PHPunit,JavaScript用过的就多了,Jasmine,Qunit,Mocha等工具(不管哪一个,至少要用到一个)C#一般用nUnit。还有各种mock,faker辅助。

3.功能测试工具

就是交互界面测试,也可以是界面样式测试。代码写的方式大致过程和单元测试差不多,不过单元测试每个单元都是独立的,理论上不应该有任何依赖关系(只要有依赖关系就叫做集成测试);而功能测试,就是最后成品的测试,必须把所有依赖打开,并且在界面上进行测试。

界面功能测试的优点:

  • 速度比人工快
  • 模拟真人操作
  • 可以录像后导出测试代码
  • 可以抓图

缺点:

  • 依赖多,依赖的环境变化可导致代码失效
  • 速度相对单元测试慢很多
  • 测试成功率可能不是100%

功能测试,也是自动测试的一种,至少解放了大量重复性劳动,大大提升界面功能开发的速度。


功能测试工具主要有phantomjs和Selenium。我两个都用,根据不同情况使用不同策略。


4. 依赖管理/程序包管理器


有了依赖管理,从此不用再手动去每个库的官方网站下载和更新库了。配置一下,运行一下命令行,然后就下载好了,定时在运行一下命令行,所有库又更新到最新版本了。开发体验大大提高。


列举一下主要好处:

  • 自动安装依赖库
  • 自动更新依赖库
  • 自动安装/更新依赖库的依赖
  • 最新库和现有项目有冲突,可以强制降级依赖库
  • 开发依赖和项目依赖分开,发布版本时候可以自动删除所有开发依赖库
  • 版本控制可以只收入依赖管理配置,无需收入依赖库的目录,大大节省版本控制大小
  • 统一团体所有人员依赖库的版本

依赖管理下载速度快,免除开发人员手动的重复劳动。大大提高开发效率


PHP的依赖管理是composer,js的依赖管理是npm和bower,C#的是nuget,


5. 流程管理/构建工具


这个叫法很多还有叫做任务自动管理工具的,不管是什么名字,都是一个意思:自动化流程管理。


简单的说从源代码到产品之间,中间还有一个复杂的过程,一般大致如下:

  • 代码清洁
  • 编译
  • 配置
  • 测试

一般对开发人员来说,凡是重复的,必须使用工具自动完成。开发人员是不愿意重复做这些流程,所以需要流程管理,把这些步骤全部用代码编排好,然后执行一个命令行,让电脑反复执行去。没有流程管理的项目不是一个好项目


JavaScript有grunt和gulp,PHP有Phing,Java有ANT。我用grunt比较多。


6. Live Reload


Live Reload一般是和流程管理一起使用的,(也有独立使用的版本)。独立出来说也是为了体现程序员一个终极特质:懒。凡是重复的,必须使用工具完成。Live Reload就是这个体现:按F5是个重复的低效率行为,必须交给工具完成


Live Reload的功能说起来很简单:

  • 检查文件是否变动
  • 如果变动刷新页面

给开发人员带来的直接好处就是查看页面变动,只要按ctrl+s保持代码就行了,连f5都不用按了。就这好处,足以把Live Reload这个工具当作神器了。配合流程管理工具,只要保存代码(ctrl+s),就马上进行构建,构建完成自动刷新页面。


我用的Live Reload是grunt-contrib-watch。


7.代码质量分析工具


人工检查代码的效率是比较低下的,所以质量分析这一块可以作为开发辅助工具,来提高开发质量


常见的代码质量工具有:

  • 语法检查,保证代码语法正确,可以跨平台,使用最佳实践
  • 代码风格检查,保证团队代码风格一致
  • 代码压缩,减少尺寸
  • 重复代码检查
  • 无用代码检查
  • 模块复杂度分析
  • 模块连接分析

等等,让然还有其他的质量分析,这些都是可以整合到流程管理上的。


JavaScript和PHP的用的比较多,Jshint,Jscs,uglifyjs,phpcpd,phpcs,phpdcd,PHPLOC等等工具,可以帮助开发人员提高代码质量,控制团队代码风格。


8.持续集成


有人和我说过,持续集成可以让你开发水平提高达到到另外一个层级。当我实践后,终于明白持续集成的魅力所在了。


要会持续集成,你首先必须学会以上6条(live reload除外),以上6条基本就是持续集成的几个基础模块,学会后,你自然而然就已经会了持续集成了。


持续集成的主要流程如下

  1. 检查版本控制库是否更新
  2. 如果更新,就下载最新版本的代码
  3. 构建
  4. 测试
  5. 报告

当你设置好一个持续集成的项目后,以上的步骤应该就是全自动的了。还是那句老话: 凡是重复的步骤,应该用工具来完成。而持续集成就是这个终极工具。


持续集成其实就是流程管理的一个升级版本,或者说一个扩充。它们都是自动流程工具。它们的差别是:

  • 流程管理主要在本机(开发人员自己的开发环境)上执行,而持续集成则是在一个独立设置的环境下执行。
  • 流程管理继续的是本机代码,而持续集成构建的是版本控制中保存的代码
  • 团队中任何一个人push代码到版本控制中,持续集成就开始构建验证新代码的可靠性。
  • 项目流程配置完成后,流程管理需要执行命令行,持续集成应该全自动
  • 流程管理是持续集成的一个模块,属于持续集成的构建模块
  • 持续集成会有更多后续的专业功能,比如说产生报告,错误通知,构建历史,测试历史等开发新型

我们可以设想一下这样的一个情况,在有20-50个人的团队在开发一个PHP项目,每个人每天至少往版本控制中push大约10次新代码,而这个项目你又要保证在3个主流的浏览器中功能一致,样式相同,而这个项目又必须跨平台,可以在mac,window,linux上都可以运行,而且还要保证PHP5.4~5.6都可以运行。这个时候,持续集成系统的优势就会显示其真正的威力了。


总之,在一个专业项目中,持续集成服务所提供的自动构建和专业报告,可以把项目开发的专业水准再次提高到一个新的层次当中。


我用过的持续集成是Jenkins。


文章到此算完结了。其实开发中,还有很多优秀的工具,但无法和这些主要的开发工具相比,就不在这里说了。


user avatar   kuang-toby 网友的相关建议: 
      

写代码写累了,来答个题。 多图慎入!



1.印象笔记·剪藏。

重点推荐这一个!

我相信:养成良好的记录习惯,是成为一个伟大程序员的必经之路!虽然我还是个屌丝程序员,哈哈哈。

Chrome插件,一键把网页存到Evernote上,选个记事本打上标签,查过的东西以后能轻松的再翻出来。


2.Chrome收藏页面

其实就是收藏的时候把名字删掉,把常用的放在最外面,很方便有木有!

3.Gliffy

Chrome的插件,免费画UML的东东,存在google drive里,实现公司与家里的同步,棒极了!


4.SourceTree

很好用的Git界面管理工具。

这个东西还有个好处,就是有一套非常好的帮助文档,帮助你理解Git,很适合初学者。

而且他还在网上有个Git的教程,感觉很不错,附送地址:

Git Tutorial: Basics

5.Halo Word

Chrome插件,翻译工具,按command键选词就能翻译,上英文网站无压力。个人感觉比有道好用点。

6.JSON Editor

Chrome插件,验证json格式是否正确


7.Postman

Chrome插件,专门测试网页跳转

先写这么多,有空再补充。继续写代码去了...

----------------------------------------------Update----------------------------------------------

有人赞诶,继续补充几个吧:

8.XtraFinder

OS X的Finder实在是垃圾啊,各种反人类,用惯了Windows的真的用不习惯。还好发现了XtraFinder,这个Mac下的Finder插件,功能非常强大,支持标签页,双Panel,还能Copy文件的路径,谁用谁知道!

9.Synergy

一套键鼠操作多台电脑的工具。


程序员最大的效率瓶颈是哪里?哼哼,就是编译或部署的时候!一开始编译就去上个知乎啊,刷下微信啊,看下微博啊,编译好了都不知道....时间就这么浪费了,思维也被打断了!

双显示好是好,但部署的时候还是会卡吧。反正我是用两台电脑,有时候一台改BUG一台部署,有时候一台写C#一台写Java,还有时候一台PS图片,一台做粒子效果。哈哈,好像有点装逼了,Sorry。

附送链接:

Synergy - Mouse and keyboard sharing software

10.曲径

翻墙利器,就是有点贵,貌似最近又涨价了,不过稳定性还是很好的。我最喜欢曲径的地方其实是它的支付方式,可以支持Paypal。本人有一部分来自国外的收入会被打进Paypal,在国内要取出来手续费实在太贵了,曲径给了我一个消费的机会哈哈哈哈。


嗯,打地铺睡觉去,有空再补充····




  

相关话题

  当程序员鼓励师是什么样的体验? 
  如果一个程序员携带一台高配笔记本穿越回二战时期,会发生什么样的故事? 
  java程序员的技术更新那么快,为什么每个技术还要读源码,会使用不就好了吗?技术那么多也学不完啊? 
  国外的程序员是如何保养「革命的本钱」? 
  offer 中的期权到底有没有用? 
  程序出现bug是必然出现的情况还是程序猿水平有限导致的? 
  高级程序员的技能,对产品而言挺简单的,而初级程序员的技能,对产品反倒是最难的。这种错位意味着什么? 
  C#中,形如 Base<T>是父类,那么子类A:Base<A>这种操作有什么规范? 
  程序员月薪一万到底有多难? 
  《失控玩家》中的游戏有可能实现出来吗? 

前一个讨论
平日醉生梦死、浑浑噩噩的毕业生怎么找到工作?
下一个讨论
只做了两菜一汤(没有鸡鸭鱼)招待初次来我家的女友,合适吗?





© 2024-06-26 - tinynew.org. All Rights Reserved.
© 2024-06-26 - tinynew.org. 保留所有权利