Perl之父Larry Wall曾在 Programming Perl 一书中提到:html
程序员的三个美德是懒惰、不耐烦和傲慢。程序员
懒惰,是程序员美德的第一要素。Larry Wall所说的“懒惰”,并非安于现状和不思进取,而是付出最少的时间或者精力来达到一样甚至更好的目标。“懒惰”的程序员会尽可能使本身的代码既实用又有很好的可读性,这样能够节省后面的不少维护成本;还会尽力完善代码中的注释及文档,以避免别人问本身太多问题,更擅长使用各类工具,从方方面面提高本身的效率。数据库
本文选自《程序员的三门课:技术精进、架构修炼、管理探秘》一书,本文会向你介绍一些很是实用的工具,这些工具能够大大提高你的工做效率,全方位把你武装成一名“懒惰”的程序员。编程
对于开发者,尤为是Java开发者来讲,使用开发工具编写代码真的能够大大提高工做效率,由于如今不少IDE都有很强大的工具,不只提供了代码补全、错误提示、自动编译等功能,还提供了各类插件,方便和其余工具融合,能大大提高写代码的效率及代码质量。架构
目前市面上主要有两款Java代码开发工具:Eclipse和IntelliJIDEA,这两款开发工具之争由来已久,不过最近几年,IntelliJIDEA逐渐撼动了Eclipse的霸主地位,成为开发者的首选开发工具。在2013年的Google I/O大会上,Google推出了新的Android集成IDE“AndroidStudio”,其最大的转变就是从Eclipse切换到了IntelliJ IDEA。并发
笔者也经历过从Eclipes转向IntelliJ IDEA的过程,相比之下,Intellij IDEA在某些方面确实比Eclipse更加出色一些,配合Mac OS操做系统上的快捷键,真的能够在开发效率上提高一大截。编程语言
关于开发者使用的IDE,Jet Brains作过一项调查,结果显示:有59%的开发者使用IntelliJ,有30%的开发者使用Eclipse,只有不到5%的开发者使用Sublime和Vim等普通文本编辑器。编辑器
程序员在协做开发时不可避免地要使用版本控制工具对代码进行管理,版本控制工具主要用于存储和追踪被管理的文件的修改历史,是软件开发者的必备工具。分布式
目前市面上比较成熟的版本控制工具备CVS、Visual SourceSafe、PVCS、Subversion(SVN)和Git等,SVN和Git的使用较为普遍。高并发
不管是SVN仍是Git,都提供了很好的版本控制功能,例如对代码的统一管理、冲突解决、代码权限控制、分支开发和合并等。开发者应该熟练掌握SVN和Git,好比代码拉取、代码提交、代码合并和冲突解决等,尤为要掌握一些Shell命令,这能够节省大量的时间。
虽然目前有不少开源代码及不少公司的内部代码都倾向于使用Git进行代码托管,但咱们不能保证所遇到的全部代码都使用了Git。公司规模越大,使用SVN进行代码托管的可能性便越大,毕竟迁移也是须要必定成本的。
自动化构建指自动建立软件组建的一组进程,包括将计算机源代码编译成二进制码、将二进制码包装成软件包并对其进行自动化测试。很早之前的自动化构建都是经过建立Make来完成的,后来发展为GNU Make。随着时间的推移,现在的软件开发主要使用更优秀的自动化构建工具来完成,例如Java世界中的三大构建工具Ant、Maven和Gradle,现在,Ant几乎要退出历史的舞台了。
Maven和Gradle之因此可以赢得众多程序员的青睐,主要是由于它们在依赖管理、冲突解决、项目构建、项目结构管理和插件机制等方面的出色表现。
所谓一图胜千言,不管是本身梳理思路,仍是给别人讲解,图案都是很好的形式。并且,程序员还常常要作一些PPT等,有了这些画图工具,就能大显身手。
1)思惟导图——XMind
人类大脑的最天然思考方式是放射性思考,也就是咱们常说的发散性思惟。咱们一般在思考一个问题的时候,都是以一个思惟点为起点,而后不断进行发散式展开的。若是咱们将这个思考过程经过图形化的方式表达出来,就是一张思惟导图。思惟导图能够有效地把思惟模式表现出来,有利于人脑的扩散思惟的展开。如图所示是一张关于“提高工做效率的软件”的思惟导图。
XMind是一款很是实用的商业思惟导图软件,采用Java语言开发而成,具有跨平台运行的性质,且基于EclipseRCP体系结构,支持插件经过编写XML清单文件扩展系统定义好的扩展点,帮助用户在真正意义上提升生产效率,被著名的互联网媒体Lifehacker评选为“最佳头脑风暴和思惟导图工具”及“最受欢迎的思惟导图软件”。
XMind的程序主体由一组插件构成,包括一个核心主程序插件、一组Eclipse运行时插件、一个帮助文档插件和一组多语种资源文件插件,对Eclipse用户很是友好。
XMind不只能够绘制思惟导图,还能够绘制鱼骨图、二维图、树形图、逻辑图和组织结构图(Org、Tree、LogicChart、Fishbone),而且能够方便地在这些展现形式之间进行转换。用户能够导入MindManager、FreeMind数据文件,灵活定制节点外观、插入图标、丰富的样式和主题。其输出格式有HTML和图片。
2)UML画图工具
UML(Unified Model Language)即统一建模语言,又被称为标准建模语言,是用来对软件密集系统进行可视化建模的一种语言。开发人员在作详细设计时,免不了要和各类UML图打交道,例如用例图、类图、对象图、时序图、活动图和状态图等。
简单来讲,开发人员在写代码以前就须要了解需求,在这以后要对软件系统进行建模,将抽象的语言描述转换成可视化的模型。而在建模过程当中须要一种标准的语言,这种语言就是UML。
目前市面上有不少UML画图工具可供选择,它们均能知足基本的画图功能,下面简单列举几种。
Rational Rose:是Rational公司出品的一种面向对象的统一建模语言的可视化建模工具,主要用于可视化建模。
Visual Paradigm for UML(VP-UML):是一种功能强大、跨平台、使用便捷、直观的UML建模和CASE工具,它能够被整合在其余CASE工具或者其余IDE工具中。Visual Paradigm for UML支持UML建模、数据库建模、对象关系映射、逆向工程和Java双向工程等,功能异常强大。
StarUML(SU):是一款开源的UML开发工具,支持绘制用例图、类图、序列图、状态图等9种经常使用的UML图,具备发展快、灵活、可扩展性强等优势,惟一的不足之处是在反向工程时只能生成类图,不能生成类之间的关系。
Markdown是一种轻量级标记语言,创始人为约翰·格鲁伯(John Gruber),容许人们使用易读易写的纯文本格式编写文档,而后将文本格式转换成有效的XHTML(或者HTML)文档。
做为程序员,咱们除了要具有编程的硬技能,还要具有写做的软件,而首选的写做方式就是Markdown。目前,不少大型博客网站都开始支持使用Markdown写文章,这无疑是对程序员的一种示好行为,著名的代码托管网站GitHub也支持使用Markdown语法来编辑README文件等,如图所示。
关于Markdown的编辑器,目前市面上也有不少选择,主要有Mou、MacDown、Typed和Bear等,还有不少在线的Markdown编辑器,在后面的在线工具章节中会详细介绍。
还须要说起的一点是,其实使用哪一种Markdown编辑器并不很重要,重要的是程序员应该掌握经常使用的Markdown语法。这样写出来的文章或者文档,能够在任意支持MD语法的平台上查看。
前面介绍过Java开发经常使用的IDE,可是在某些状况下咱们仅须要打开一个单独的文本文件,好比打开一个XML格式的文件、一个JSON格式的文件等,这时一款好用的文本编辑器就派上用场了。
SublimeText是一款流行的代码编辑器软件,可运行在Linux、Windows和Mac OS X等操做系统之上,是许多程序员喜欢使用的一款文本编辑器软件。它具备代码高亮、语法提示、自动完成且反映快速的编辑器软件,不只界面华丽,还支持插件扩展机制,如图所示。
Atom是GitHub专门为程序员推出的跨平台的文本编辑器,由于有简洁、直观的图形界面而受到了广大程序员的青睐,并且它有不少有趣的特色:支持CSS、HTML、JavaScript等网页编程语言;支持宏,自动完成分屏功能,集成了文件管理器;支持Mac OS、Windows和Linux操做系统,支持Node.js所写的插件,并内置由GitHub提供的Git版本控制系统。多数的延伸包皆为开放源代码受权,并由社区建置与维护。
Notepad++也是一套被广大程序员选用的纯文本编辑器,基于一样开放源码的Scintilla文本编辑组件研发而成,整个项目起初被托管于SourceForge.net,曾经两度得到SourceForge社区选择奖——最佳开发工具。Notepad++在2010年6月被托管于TuxFamily,现被托管于GitHub。
1)Host绑定
在平常开发工做中,咱们对Host绑定确定不陌生,由于咱们几乎天天都要和它打交道。咱们可能常常要在不一样的Host绑定之间来回切换,尤为是在Java Web开发中,在本地开发测试时可能使用的是一套Host绑定,在测试环境部署以后提交给测试人员进行测试时又要使用另外一套Host绑定。在测试以后,要经历预发布、灰度发布等,都须要一套新的Host绑定。采用好用的Host绑定工具能够大大节省Host绑定切换的时间。
SwitchHosts是一个很是方便、快捷的Host绑定切换工具,免费、开源,支持预发高亮、方案多选、单击行号快速切换注释、系统菜单栏快捷切换、方案导入导出等功能。
2)HTTP调试
在平常的Web开发中,咱们除了会和Host绑定打交道,还常常会和RESTful API打交道,有时咱们须要一个工具来帮咱们发送HTTP请求,或者说是模拟HTTP请求,好比帮咱们发送POST请求等,这时就须要一款能够模拟发送HTTP请求的工具。
Postman是Google开发的一款功能强大的网页调试与发送网页HTTP请求,并能运行测试用例的Chrome插件。除插件外,也提供软件下载。它能够模拟各类HTTP请求,从经常使用的GET、POST到RESTful的PUT、DELETE等,甚至能够发送文件及额外的Header等。Postman能够将Response内容的格式自动美化,将JSON、XML或者HTML都整理成咱们能够阅读的格式。Postman还支持编写测试脚本,能够快速检查Request结果,并返回测试结果。总之,Postman是一款很是不错的能够用来作HTTP调试的软件。
▌《程序员的三门课:技术精进、架构修炼、管理探秘》
于君泽 李伟山 张洪亮 彭首長 刘朋 著
咱们都有一个共同的梦想——成为更棒的程序员,可是如何作?如何学习和精进本身的技术?如何作业务分析和架构设计?如何作技术管理?本书就广大程序员都很关注的问题提供一些思路和方法。
▶ 本书内容分为三大篇
第1篇介绍程序员的技能成长路径,介绍如何经过学习来加速成长,并讲解很是重要的业务分析和设计知识;
第2篇详细介绍了架构修炼中的必备架构思惟模式、架构设计过程,还经过真实案例剖析了架构设计的核心要素及关注点,以及如何经过架构设计来把控质量和风险;
第3篇总结了作技术管理的诀窍,揭秘如何从准备作技术管理到实现自我管理再到实现团队管理。
▶ 做者简介
于君泽
某互联网公司技术专家,在分布式系统架构设计、高并发系统设计、领域建模、研发管理、内建质量等方面有较多心得,乐于交流和分享,曾创立技术社群“中生代技术”。维护技术公众号“技术琐话”。
李伟山
现任某人工智能公司技术总监,江湖人称“山哥”,在分布式系统架构设计、高并发系统设计、系统稳定性保障等方面积累了丰富的实践经验,擅于利用数据分析解决实际问题,对新技术有浓厚的兴趣,乐于分享。我的技术公众号:技术方舟。
张洪亮
网名Hollis,知名技术博主,我的技术博客(http://www.hollischuang.com)阅读量达数百万。90后程序员,2015年毕业于哈尔滨理工大学,现任某互联网公司技术专家,专一于Java研发、技术架构及程序员的成长等方面。我的技术公众号:Hollis。
彭首長
熊猫优福联合创始人,聚美优品前技术总监。在团队管理、领域设计、分布式架构、高并发设计、IoT架构等方面有丰富的实践经验,擅长行业分析,对新技术高度敏感,热衷于技术实践且乐于分享。
刘朋
高绩效团队教练,教练型领导,中生代技术社区联合创始人,北京大学理学学士、工学硕士。现就任于中国移动(成都)5G产业研究院,曾任诺基亚通讯(成都)有限公司研发经理。在敏捷实践、高绩效团队教练技术、技术团队管理等方面积累了丰富的经验,并总结出一套特别适合程序员突破自身瓶颈、快速成长的领导力模式。