我也谈谈自己的一些提高开发体验经验,就说软件工具部分。
这里的经验基本上都是冲着一个原则去的:“凡是需要重复做的,必须使用自动化工具完成。”
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条基本就是持续集成的几个基础模块,学会后,你自然而然就已经会了持续集成了。
持续集成的主要流程如下
检查版本控制库是否更新
如果更新,就下载最新版本的代码
构建
测试
报告
当你设置好一个持续集成的项目后,以上的步骤应该就是全自动的了。还是那句老话: 凡是重复的步骤,应该用工具来完成。而持续集成就是这个终极工具。
持续集成其实就是流程管理的一个升级版本,或者说一个扩充。它们都是自动流程工具。它们的差别是:
流程管理主要在本机(开发人员自己的开发环境)上执行,而持续集成则是在一个独立设置的环境下执行。
流程管理继续的是本机代码,而持续集成构建的是版本控制中保存的代码
团队中任何一个人push代码到版本控制中,持续集成就开始构建验证新代码的可靠性。
项目流程配置完成后,流程管理需要执行命令行,持续集成应该全自动
流程管理是持续集成的一个模块,属于持续集成的构建模块
持续集成会有更多后续的专业功能,比如说产生报告,错误通知,构建历史,测试历史等开发新型
我们可以设想一下这样的一个情况,在有20-50个人的团队在开发一个PHP项目,每个人每天至少往版本控制中push大约10次新代码,而这个项目你又要保证在3个主流的浏览器中功能一致,样式相同,而这个项目又必须跨平台,可以在mac,window,linux上都可以运行,而且还要保证PHP54~56都可以运行。这个时候,持续集成系统的优势就会显示其真正的威力了。
总之,在一个专业项目中,持续集成服务所提供的自动构建和专业报告,可以把项目开发的专业水准再次提高到一个新的层次当中。
我用过的持续集成是Jenkins。
文章到此算完结了。其实开发中,还有很多优秀的工具,但无法和这些主要的开发工具相比,就不在这里说了。
it软件是一种职业,也算一种行业吧,未来十大最热门IT职业排行榜
1、安全技术人员:每家IT公司都需要安全技术人员应对可能发生的网络攻击。如果你的简历里有CTIA的安全认证,想必获得一份工作会变得轻松许多。
2、虚拟系统管理员:虚拟化和自动化技术搭乘云计算获得飞速发展,今后系统管理员也要与之接轨。
3、网络工程师:网络工程师作为传统的一项职位,依然十分强势。由于资讯和竞争的需要,未来几年中社会交往和协作会更加密切。这一切要求网络技术和网络工程师发挥更多的作用。
4、开源技术人员:免费、开源产品越来越受到人们的欢迎。公司依靠此类产品能迅速占领用户市场,然后形成一系列付费功能维持运营体系。这一切都需要熟悉开源程序的开发人员才能实现。
5、质量保障工程师:一个成功的产品或服务,除了技术开发以外,还需要服务保障人员的努力才能完善。IBM惠普等大公司都在部门内部建立类似确保产品生命周期正常运转的职位。
6、电子商务经理:因为电子商务的日益发展,使企业的经营形态发生了根本改变。经营形态改变以后,电子商务的份额不断扩大,电子交易经营人员就显得尤其重要。
7、项目管理人员:这个行当要求你具备整体管理项目的能力,包括做计划、项目实施、日程管理、预算、资源分配和商品交付质量管理等。所需技能有管理大型、复杂与并行项目的能力。包括计划开发、项目实施和客户管理的经验。最好有较强的Internet技术应用和软件开发背景。
8、IT审计师:IT审计师目前已成为全球范围最抢手的高级人才。这些人才一般都具备全面的计算机软硬件知识,对网络和系统安全有独特的敏感性,并且对财务会计和单位内部控制有深刻的理解。控制计算机环境风险和信息系统运行风险将成为管理资咨询和服务的重点。
9、服务目录管理员:不一定要求某些权威认证和精通的领域,但要具备较高的接受新事物的能力,敏锐的洞察力,具有反应迅速且善于合作的能力。
10、IT行业顾问:随着IT业的发展,行业竞争也逐渐加剧,市场前景越来越难以估量。对企业给予专业的顾问咨询,需要的不仅是专业知识,还要有行业经验的市场感觉,这是IT行业的专业顾问咨询人才的价值所在。
java是一个十分优美的语言,其语言具有面向对象,分布式和多线程等高级计算机语言的特点,同时可移植性,安全性等也受到大家的青睐。北京昌平IT培训认为JAVA语言简单易学,如果你准备进入Java软件开发这个行业的话,就有一下java入门学习的问题需要掌握。
API:ApplicationProgrammeInterface→应用程序接口,Java最主要的特点是其面向对象OO→ObjectOriented→面向对象。所以设置了很多基础应用程序接口(API),你是不是在你设计程序的时候常用import!那就是引用API的方法。
J2SDK:J2SDK=JDK+JRE,J2SDK(Java2SoftwareDevelopmentKit)→JAVA2软件开发工具包,包括了Java编译器和Java虚拟器。
JDK:JavaDevelopmentKit→JAVA开发工具包,有时也可称之为J2SDK。JDK是整个Java的核心,包括了Java运行环境JRE(JavaRuntimeenvironment),一堆Java工具和Java基础的类库。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。
JVM:JavaVirtualMachine→Java虚拟器,把Java字节码翻译为计算机CPU能读懂的语言。Java为了实现平台无关性这个功能,专门设计了一个虚拟器,这样使得Java的移植性很高。
JRE:JavaRuntimeenvironment→Java运行时环境。是JVM的程序实现。有这个东西,就能运行java程序。
推荐了解域之盾系统
将域之盾客户端安装在员工电脑上 即可从管理端查看各个客户端电脑的硬件资产 软件资产 也可设置资产变化报警 当客户端电脑硬件发生变化或者软件发生变化时管理端会收到报警提示 避免不必要的损失
域之盾软件功能强大 全面 灵活 推荐试用了解 希望可以帮助到你
运维管理分为很多个方向,比如主机监控、ITSM流程管理、devops敏捷开发、APM应用性能管理,等等,太多的方向。
通常用得较多的,应该是 主机监控和ITSM流程管理系统。主机监控,像北塔、PIGOSS,都是很成熟的产品。
ITSM流程管理系统,可以了解一下 Servicehot ITSM系统,提供了SaaS、onpermise Saas(项目租用)、onpermise(项目)多种合作模式,功能全面,个性化程度高,适合各行业的运维部门使用!
以上就是关于作为 IT 从业人员,你觉得有什么工具大大提高了你的工作效率全部的内容,包括:作为 IT 从业人员,你觉得有什么工具大大提高了你的工作效率、什么是IT软件、北京昌平IT培训分享java入门学习如何学等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)