程序员技能与成长:程序员的必备工具箱(值得收藏)

程序员技能与成长:程序员的必备工具箱(值得收藏)_第1张图片

本节将要介绍的多种实用工具,就可以帮我们全方位武装成“懒惰”的程序员,例如可帮我们提升工作效率的硬件、操作系统和软件。

可以帮我们提升工作效率的硬件

这里盘点一下那些可以提升程序员工作效率的硬件设备。

1.显示器

笔记本电脑基本上是程序员开发的标配,那么要不要给自己再多配置一台显示器呢?配置一台多大的显示器呢?

在 StackOverflow2018 开发者调查报告中显示,有 51.1%的开发者使用两个显示器,有17%的开发者使用三个以上显示器。

美国犹他州立大学的研究人员也测试了工作效率与不同电脑配置的 关 联 性 。他 们 让 受 访 者 完 成 同 样 的 工 作 , 测 试 结 果 如 下(http://dwz.cn/Kf579):

◎ 使用24寸显示器工作的人比使用18寸显示器工作的人在工作效率上要高52%;

◎ 使用两个 20 寸显示器工作的人比使用单个 18 寸显示器工作的人在工作效率上要高44%;

◎ 当显示器达到26寸时,受访者的工作效率开始下降。

所以,我们基本可以得出结论:额外配置一台24寸左右的显示器可以提升工作效率。因为作为程序员,我们可能要同时和 IDE、Linux命令行及浏览器等打交道,有多台显示器可以帮我们减少切换时间。

2.外设

键盘和鼠标等外设对于程序员来说,其重要性不言而喻。在

StackOverflow2018 开发者调查报告中显示,有超过52%的开发者认为

人体工程学键盘和鼠标可以使自己在繁忙的工作中感到一点点舒适

感。

关于键盘和鼠标,笔者认为,一个好的机械键盘或电容键盘加一个比较灵敏的无线鼠标,不仅可以令一个程序员的工作效率得到很大提升,还可以在一定程度上起到愉悦心情的作用,尤其是通过调试解决一个Bug后,最后敲击键盘的那一刻。

可以帮我们提升工作效率的操作系统

目前,主流的操作系统共有三种:Linux、Windows及Mac OS。关于操作系统的使用及选择,StackOverflow 在 2018 年也做过类似调查(DeveloperSurveyResults2018,https://insights.stackoverflow.com/survey/2018),

结果显示:

主要使用Windows操作系统的开发者占了49.9%,主要使用Mac OS操作系统的开发者占了 26.7%,主要使用 Linux操作系统的开发者占了23.2%。从数字上来看,虽然使用Windows操作系统的开发者占了一半左右,但另一项关于程序员最想使用的系统平台的调查结果显示,有76.5%的开发者期望使用Linux操作系统,有63.9%的开发者喜欢并且期望使用Mac OS操作系统,有61.2%的开发者期望使用Windows操作系统。

对于以上三种操作系统,笔者在自己的开发生涯中均使用过,目前使用Mac OS作为主要的操作系统进行开发。由于开发者开发出来的应用基本都部署在Linux服务器上,而且 Linux 操作系统提供了很多Shell 命令,可以快速地进行构建、编译、执行、排查问题等,所以在日常的纯代码开发、交付及运维方面可以大大提升效率。但是,程序员又无法避免地要和各种软件打交道,比如开发工具、浏览器、画图工具等,这时提供图形界面的Windows操作系统就可以很好地支持这些图形化软件了。Mac OS作为一款基于UNIX的图形化操作系统,就兼容了Linux和Windows操作系统的优点,既可以运行Shell命令,又可以进行图形化操作,当然,Mac OS操作系统也有一些缺点,比如支持的软件不够多、价格昂贵等。

笔者觉得,程序员选择操作系统的优先级顺序应该是Mac OS、Linux、Windows。

可以帮我们提升工作效率的软件

这里再介绍一些可以帮助开发者提升工作效率的软件,主要包括开发工具、版本控制工具、自动化构建工具和画图工具等。

1.开发工具对于开发者,

尤其是Java开发者来说,使用开发工具编写代码真的可以大大提升工作效率,因为现在很多IDE都有很强大的工具,不仅提供了代码补全、错误提示、自动编译等功能,还提供了各种插件,方便和其他工具融合,能大大提升写代码的效率及代码质量。

目前市面上主要有两款Java代码开发工具:Eclipse和IntelliJIDEA,这两款开发工具之争由来已久,不过最近几年,IntelliJ IDEA逐渐撼动了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等普通文本编辑器。

2.版本控制工具

程序员在协作开发时不可避免地要使用版本控制工具对代码进行管理,版本控制工具主要用于存储和追踪被管理的文件的修改历史,是软件开发者的必备工具。

目 前 市 面 上 比 较 成 熟 的 版 本 控 制 工 具 有 CVS 、 VisualSourceSafe、PVCS、Subversion (SVN)和Git等,SVN和Git的使用较为广泛。

无论是SVN还是Git,都提供了很好的版本控制功能,例如对代码的统一管理、冲突解决、代码权限控制、分支开发和合并等。笔者认为,开发者应该熟练掌握SVN和Git,比如代码拉取、代码提交、代码合并和冲突解决等,尤其要掌握一些 Shell 命令,这可以节省大量的时间。虽然目前有很多开源代码及很多公司的内部代码都倾向于使用Git进行代码托管,但我们不能保证所遇到的所有代码都使用了Git。公司规模越大,使用SVN进行代码托管的可能性便越大,毕竟迁移也是需要一定成本的。

3.自动化构建工具

自动化构建指自动创建软件组建的一组进程,包括将计算机源代码编译成二进制码、将二进制码包装成软件包并对其进行自动化测试。很早以前的自动化构建都是通过创建Make 来完成的,后来发展为GNU Make。随着时间的推移,如今的软件开发主要使用更优秀的自动化构建工具来完成,例如Java世界中的三大构建工具Ant、Maven和Gradle,如今,Ant几乎要退出历史的舞台了。

Maven和Gradle之所以能够赢得众多程序员的青睐,主要是因为它们在依赖管理、冲突解决、项目构建、项目结构管理和插件机制等方面的出色表现。

4.画图工具

所谓一图胜千言,无论是自己梳理思路,还是给别人讲解,图案都是很好的形式。而且,程序员还经常要做一些PPT等,有了这些画图工具,就能大显身手。

1)思维导图——XMind

人类大脑的最自然思考方式是放射性思考,也就是我们常说的发散性思维。我们通常在思考一个问题的时候,都是以一个思维点为起点,然后不断进行发散式展开的。如果我们将这个思考过程通过图形化的方式表达出来,就是一张思维导图。思维导图可以有效地把思维模式表现出来,有利于人脑的扩散思维的展开。如图1.12所示是一张关于“提升工作效率的软件”的思维导图。

程序员技能与成长:程序员的必备工具箱(值得收藏)_第2张图片

图1.12

XMind 是一款非常实用的商业思维导图软件,采用 Java 语言开发而成,具备跨平台运行的性质,且基于EclipseRCP体系结构,支持插件通过编写XML清单文件扩展系统定义好的扩展点,帮助用户在真正意义上提高生产效率,被著名的互联网媒体Lifehacker评选为“最佳头脑风暴和思维导图工具”及“最受欢迎的思维导图软件”。

XMind 的程序主体由一组插件构成,包括一个核心主程序插件、一组 Eclipse 运行时插件、一个帮助文档插件和一组多语种资源文件插件,对Eclipse用户非常友好。

XMind不仅可以绘制思维导图,还可以绘制鱼骨图、二维图、树形图、逻辑图和组织结构图(Org、Tree、Logic Chart、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图,具有发展快、灵活、可扩展性强等优点,唯一的不足之处是在反向工程时只能生成类图,不能生成类之间的关系。

5.Markdown编辑器

Markdown是一种轻量级标记语言,创始人为约翰·格鲁伯(JohnGruber),允许人们使用易读易写的纯文本格式编写文档,然后将文本格式转换成有效的 XHTML (或者HTML)文档。

作为程序员,我们除了要具备编程的硬技能,还要具备写作的软件,而首选的写作方式就是 Markdown。目前,很多大型博客网站都开始支持使用 Markdown 写文章,这无疑是对程序员的一种示好行为,著名的代码托管网站 GitHub 也支持使用 Markdown 语法来编辑README文件等,如图1.13所示。

程序员技能与成长:程序员的必备工具箱(值得收藏)_第3张图片

图1.13

关于Markdown的编辑器,目前市面上也有很多选择,主要有Mou、MacDown、Typed和Bear等,还有很多在线的Markdown编辑器,在后面的在线工具章节中会详细介绍。

还需要提及的一点是,其实使用哪种Markdown编辑器并不很重要,重要的是程序员应该掌握常用的Markdown语法。这样写出来的文章或者文档,可以在任意支持MD语法的平台上查看。

6.文本编辑器

前面介绍过Java开发常用的IDE,但是在某些情况下我们仅需要打开一个单独的文本文件,比如打开一个 XML格式的文件、一个 JSON格式的文件等,这时一款好用的文本编辑器就派上用场了。

Sublime Text是一款流行的代码编辑器软件,可运行在Linux、Windows和Mac OS X等操作系统之上,是许多程序员喜欢使用的一款文本编辑器软件。它具有代码高亮、语法提示、自动完成且反映快速的编辑器软件,不仅界面华丽,还支持插件扩展机制,如图1.14所示。

程序员技能与成长:程序员的必备工具箱(值得收藏)_第4张图片

图1.14

Atom是GitHub专门为程序员推出的跨平台的文本编辑器,因为有简洁、直观的图形界面而受到了广大程序员的青睐,而且它有很多有趣的特点:支持CSS、HTML、JavaScript等网页编程语言;支持宏,自动完成分屏功能,集成了文件管理器;支持Mac OS、Windows和Linux操作系统,支持Node.js所写的插件,并内置由GitHub提供的Git版本控制系统。多数的延伸包皆为开放源代码授权,并由社区建置与维护。

Notepad++也是一套被广大程序员选用的纯文本编辑器,基于同样开放源码的Scintilla文本编辑组件研发而成,整个项目起初被托管于SourceForge.net,曾经两度获得SourceForge社区选择奖——最佳开发工具。Notepad++在2010年6月被托管于TuxFamily,现被托管于GitHub。

7.其他软件

除了以上介绍的一些必备软件,还有些常用工具也是程序员在日常工作中必不可少的,例如Host绑定、HTTP调试等。

1)Host绑定

在日常开发工作中,我们对 Host 绑定肯定不陌生,因为我们几乎每天都要和它打交道。我们可能经常要在不同的Host绑定之间来回切换,尤其是在Java Web开发中,在本地开发测试时可能使用的是一套 Host 绑定,在测试环境部署之后提交给测试人员进行测试时又要使用另一套 Host 绑定。在测试之后,要经历预发布、灰度发布等,都需要一套新的Host绑定。采用好用的Host绑定工具可以大大节省Host绑定切换的时间。

SwitchHosts是一个非常方便、快捷的Host绑定切换工具,免费、开源,支持预发高亮、方案多选、单击行号快速切换注释、系统菜单栏快捷切换、方案导入导出等功能,如图1.15所示。

程序员技能与成长:程序员的必备工具箱(值得收藏)_第5张图片

图1.15

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.搜索类在线工具

本节讲解几种搜索类在线工具。Grepcode(http://grepcode.com/)是一个面向于 Java 开发人员的网站,在这里你可以通过Java的projects、classes等关键字在线查看对应的源码。通过Grepcode,还可以在线查看很多不同版本的源码,并下载相关的 jar 包、源码 jar 包和 Doc 文件。同样,我们可以使用xxx-1.1.1.jar类似的名字直接找到对应的jar包并下载。

SearchCode(https://searchcode.com/)是一个源码搜索引擎,目前支持从 GitHub、Bitbucket、Google Code、CodePlex、SourceForge和Fedora Project平台搜索公开的源码,如图1.16所示。

程序员技能与成长:程序员的必备工具箱(值得收藏)_第6张图片

图1.16

对于 mvnrepository(http://mvnrepository.com)就不详细解释了,它用于查询 Maven的gav(groupId、artifactId、version)等信息,如图1.17所示。

程序员技能与成长:程序员的必备工具箱(值得收藏)_第7张图片

图1.17

2.生成类在线工具

下面讲解各种生成类在线工具。1)用SQL自动生成Java代码AutoJCode(http://www.autojcode.com/code/sql2class.jsp)可以从SQL的建表语句中生成一个DO类。很多时候,我们在有了数据库的建表语句之后,会希望快速生成与之相对应的POJO,这时这种自动生成工具就派上用场了。

2)用JSON生成Java类

JSON是目前Java Web中数据传输的主要格式,我们在很多时候都会有将JSON转成Java对象的需求。有时合作方会提供一个JSON样例,需 要 我 们 自 定 义 Java 类 , 这 时 这 个 工 具 就 派 上 用 场 了 。

BeJSON(http://www.bejson.com/json2javapojo)就是一款比较好用的工具。

3)Corn表达式的生成

Cron一般用于配置定时任务的执行,但是要想一次性地把一个Corn表达式配置好,确实很难,需要我们记住其语法。有一些在线工具可以提供图形化的界面,只要输入想要定时执行的周期等,就可以自 动 生 成 Corn 表 达 式 。推 荐 使 用 pdtools 提 供 的 becorn(http://www.pdtools.net/tools/becorn.jsp)。

4)正则代码的生成

正则表达式,又叫作规则表达式,是计算机科学中的一个概念,通常被用于检索、替换那些符合某个模式(规则)的文本。在使用正则表达式进行字符串过滤时,需要用事先定义好的一些特定字符及这些特定字符的组合,组成一个规则字符串,这个规则字符串用于表达对字符串的一种过滤逻辑。这个规则字符串的定义通常是比较麻烦和复杂的,也需要经过大量的测试和验证才能被采用。某些网站(如http://tool.chinaz.com/tools/regexgenerate)提供了正则表达式的生成工具,可以一键生成身份证号、邮箱、手机号等常用的正则表达式。

3.转换类在线工具

下面讲解一些转换类在线工具。

1)编码转换

编码问题一直困扰着开发人员,尤其在Java中更加明显,因为Java是跨平台的语言,在不同的平台之间及编码之间的切换较多。在计算机中提供了多种编码方式,常见的有ASCII、ISO-8859-1、GB2312、GBK、UTF-8、UTF-16等。有些时候,开发人员需要通过编码转换的方式来查看不同编码下的文件内容。“站长工具”的编码转换(http://tool.chinaz.com/tools/unicode.aspx)功能比较全面,提供了Unicode编码、UFT8编码、URL编码及解码等功能。

2)时间戳转换

时间戳(英语:Timestamp)是指在一连串的资料中加入辨识文字,如时间或日期,用于保障本地端(local)资料的更新顺序与远端(remote)一致。

在 Java 中有很多地方都会用到时间戳,也经常会使用这种转换工具(http://tool.chinaz.com/Tools/unixtime.aspx)。

3)世界时间转换

世界时间转换,比较常见的是将北京时间转换成纽约时间、将纽约时间转换成洛杉矶时间等。Timebie(http://www.timebie.com/cn/easternbeijing.php)便提供了世界时间相互转换的功能。

4)加密、解密加密、解密也是在 Java Web 中经常遇到的,有时我们需要验证加密算法是否正确,或者需要解密等,就需要一款在线工具(参见http ://tool.chinaz.com/tools/textencrypt.aspx ) 来 快 速 验 证了。

5)单位换算

Convertworld(https://www.convertworld.com/zh-hans/)是一个比较全的单位换算的网站。笔者经常用它进行时间单位和货币单位的换算。

4.检查类在线工具

下面讲解一些检查类在线工具。

1)JSON在线验证及格式化

JSON 是一种由道格拉斯·克罗克福特构想和设计的轻量级的数据交换语言,该语言以容易让人阅读的文字为基础,传输由属性值或者序列性的值组成的数据对象。目前有很多编程语言都支持JSON格式数据的生成和解析。

在很多Web应用中都会使用JSON进行数据传输,所以,我们在开发过程中会经常接触JSON格式的文本,有时我们不确定这个文本是否完全符合JSON格式,或者想更清晰地查看这个JSON文本的格式关系,这就需要一款工具进行JSON格式的验证和格式化。

笔 者 用 过 很 多 JSON 在 线 格 式 化 工 具 , 经 过 实 践 发 现 ,Json.cn(https://www.json.cn/)比较不错,不仅支持JSON格式的验证及格式化,还可以将JSON格式压缩成普通文本等,如图1.18所示。

程序员技能与成长:程序员的必备工具箱(值得收藏)_第8张图片

图1.18

2)Diff Check

使用过SVN或者Git的人对Diff Check肯定不陌生,但有时候我们修改的文本内容并没有被版本控制工具管理起来,那么可以使用在线的网站查看文件的修改情况,比如Diffchecker(https://www.diffchecker.com/),如图1.19所示。

程序员技能与成长:程序员的必备工具箱(值得收藏)_第9张图片

图1.19

3)正则验证

Java 开发人员对正则表达式肯定不陌生。“站长工具”提供的正则验证(http://tool.chinaz.com/regex)就比较不错。

5.对照类在线工具

对照类在线工具如下。

◎ ASCII 对 照 表 :http ://tool.oschina.net/commons ?type=4。

◎ HTTP状态码:http://tool.oschina.net/commons?type=5。

◎ HTTP Content-type:http://tool.oschina.net/commons.

◎TCP/UDP常见端口参考:http://tool.oschina.net/commons?type=7。◎ HTML 转 义 字 符 :http ://tool.oschina.net/commons ?type=2。

◎ RGB 颜 色 参 考 :http ://tool.oschina.net/commons ?type=3。

◎ 网 页 字 体 参 考 :http ://tool.oschina.net/commons ?type=8。

6.其他类型的在线工具

下面讲解其他类型的一些在线工具。

1)在线UML制图

ProcessOn(https://www.processon.com/)是一个在线协作绘图平台,为用户提供了非常强大、易用的作图工具,支持在线创作流程图、BPMN、UML 图、UI 界面原型设计、iOS界面原型设计等。

2)在线代码运行

coderunner(https://tool.lu/coderunner/)可以在线运行PHP、C、C++、Go、Python、Java、Groovy等代码,在我们手头没有IDE又想执行一个小程序时是个不错的选择。

IT技术分享社区

个人博客网站:https://programmerblog.xyz

文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识

你可能感兴趣的:(编程语言,java,xhtml,javascript,android模拟器)