10

7种代码工具,帮助您提高团队工作效率

 3 years ago
source link: http://developer.51cto.com/art/202102/646870.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Ub6jiu.jpg!mobile

【51CTO.com快译】常言道:“工欲善其事,必先利其器。”开发人员时常需要使用各种工具,来加快其代码的编写速度。就算在代码的测试环境,他们也会趋向使用各种脚本与工具。通过与业界许多经验丰富的开发和测试人员的深入交流,我们收集了目前七种最常用的代码工具,可方便您提高团队的整体工作效率。

1. Linux I3窗口管理器(Window Manager)

开发人员一直能够受益于Linux所提供的灵活性和自由度。而I3就是在此基础上,提高了用户对于编程环境的完全掌控能力。总的说来,I3窗口管理器针对Linux提供了轻量级、开源的平铺风格,可用于控制窗口在屏幕上的外观和位置。由于被平铺显示在操作系统的GUI(图形用户界面)顶部,因此I3可以通过自动调整窗口大小和重新排列窗口,来避免用户的工作屏幕上出现窗口的重叠。以下是I3窗口管理器的主要特点:

  • 简单高效:作为一款轻巧的工具,I3是专为开发人员设计的、具有最小的处理能力。
  • 键盘控制:I3内置了广泛的、适用于不同操作的快捷键组合。当然,您也可以将其他快捷方式直接添加到其config文件中,以移动平铺的方式,打开终端,更改布局等代替鼠标的操作。
  • 有效地使用屏幕:通过使用I3提供的平铺,您不必在同一个窗口中切换大量的选项卡,而能够以平铺的方式打开任意数量的窗口。这对于那些需要在多个终端上来回切换的系统管理员,以及需要使用和测试多个终端的用户来说十分方便。
  • 自定义主题:您可以根据自己的偏好,来自定义I3的外观,包括微调其背景、窗口外观与操作行为、以及通知界面等。

专家建议:使用I3的工作区

I3有一项非常实用的功能:开发人员可以将各个窗口分组为带有不同编号的工作区,以便在不同的区域运行不同的工作流。您可以通过索引或按下super按钮的方式,来隐藏其他的窗口,只突显主工作区窗口,并能够保持在不同的工作区之间快速切换。

此外,对于拥有双显示器的用户而言,他们可以在每台显示器上先打开一个工作区,然后只需一次性快捷键操作,便可将主工作区切换并投射到指定显示器上。这将大幅提高他们的生产率。

ZjqiAfQ.png!mobile

2. Vim

适用于各大主流平台的Vim,是大多数编程语言的首选文本编辑器。它可以通过为开发人员提供自定义的快捷键组合,来提高编程的效率。Vim具有多种文本编辑模式,其中每一种模式都可以针对某项特定的任务进行优化。例如:您可能为Python设置一种模式,而为C++设置另一种模式。这些模式允许相同的快捷键针对不同的语言,发出迥异的操作命令。此外,用户可以在共享的.vimrc.文件中,配置Vim的快捷方式。

专家建议:使用DRY的原则,来设置Vim快捷方式

开发人员一直推崇着DRY(Don’t Repeat Yourself)的思想,即:不要重复实现自己已实现的功能。也就是说,尽量将需要重复实现的功能性代码模块化,以便在下次需要的时候,直接调用之。我们可以在设置Vim快捷方式时,延用类似的原则。例如,如果您发现自己手头的工作,经常需要使用Java来实现某个二进制搜索树时,则可以通过设置快捷方式,以粘贴一段已写好的二进制搜索树的模板。

i22UFbr.png!mobile

3.Bash

Bash是一款为GNU项目开发的免费Unix shell。一直以来,它都被用作Linux、MacOS、甚至是Windows 10的默认登录shell。其实,Bash还能支持数百种可以从应用程序内调用的命令。

Bash的亮点体现在脚本上。用户不必逐一输入一组命令,而可以通过一个包含了所有执行命令的shell脚本文件,让它们依次自动执行。同时,由于Bash里的命令比较偏底层,因此用户无需打开桌面应用,即可操纵各种文件与内存。例如,您可以创建一个Shell脚本,在无需调用文件管理器的情况下,系统性地将某个硬盘内的全部内容传输到另一台设备上。可见,Bash不但效率更高,而且能够执行更为专门的任务。

专家建议:使用Bash的历史

您可以使用如下Bash历史的获取方式,来进一步提高执行的效率与能力:

多窗口的历史记录:

默认情况下,Bash只会记录已打开的第一个实例的历史命令,而不会记录后续窗口的历史信息。不过,您可以通过命令:shopt -s histappend,让所有活动的Bash窗口都可以记录历史命令。

重复上一条命令:

您可以使用键盘上的向上箭头、或ctrl+p组合键,来查看最近执行过的一条命令。

反向搜索历史:

您只需按下ctrl+r的组合键,即可在Bash的历史中搜索过去的命令。Bash会使用自动填充的方式进行匹配。如果有多行匹配,您可以再按一次ctrl+r,以便在其中循环选择。

4.函数式编程(Functional Programming)

函数式编程是一种声明式编程范例,可用于构造那些具有纯函数集合的程序。这些程序往往是由一些基本的函数单元,组合构造而成。值得注意的是,声明式编程关注的是构建什么,而不是如何去实现。它通过提供数学上和逻辑上的范例,来方便用户轻松地设计出声明式编程。

函数式编程比其他方法更具模块化。它通过将程序拆分为较小的功能函数,以便用户在整个程序中实现复用。当然,用户也可以根据模块化的函数,仅复用整个方案中的某一部分。

此外,由于函数式编程里的数据保持不变,因此不会产生任何副作用。例如我们有某个函数是从n开始,需要将n传递给function1,然后将function1的结果输入给function2。下面是两种不同方法的伪代码(pseudo-code):

块式方法:

int n = 5; n = function1(n); n = function2(n); return n;

函数式方法:

int n = 5; return function2(function1(n));

在函数式方法中,我们通过function1(n)直接将n传递给function2,而不是去扩充n,因此这种声明方式保证了n所传递的值不会发生改变,进而保证了该函数在使用中不会产生任何副作用。

专家建议:函数式思维,不仅仅是语言

适合此类范例的函数式编程语言有:Clojure、Scala和Haskell等。尽管它们的功能强大,但是对于初学者来说并不容易上手。新手程序员需要先在自己熟悉的编程语言中,试着通过如下方法,来训练和使用函数性思维:

  • 利用map、reduce等操作,改变以前的块式编程思想。
  • 练习在每次编程中,使用局部作用域的变量和函数,来减少副作用。
  • 由于递归方案需要函数性思维,因此在实践中优先考虑递归方案。

uyUNjye.png!mobile

5.Reflect

回归测试是确认已开发的软件,能够在更新后仍可正常运行的过程。这几乎是每个开发人员必经的过程。但是由于需要涵盖所有可能的错误,因此该过程也会相当繁琐。

Reflect通过为任何网站创建自动化回归测试来解决此类问题。它不需要任何安装,即可与任何JavaScript框架协同使用。其具体操作步骤如下:

  1. 进入“记录测试”模式
  2. 加载网站的当前工作页面
  3. 单击需要测试的功能
  4. 停止记录测试,这将生成一个测试脚本,以模拟各种点击
  5. 输入目标网站的测试版本地址
  6. 激活测试脚本
  7. 查看记录下的结果

通常,测试结果会将发生问题时的截屏片段,发送到JavaScript控制台,以便用户从源头处迅速开展问题诊断。这种“一次性创建录屏,多次模拟测试”的方式不仅可以为用户节省大量的手动测试时间,还可以自动生成每个测试的视频记录,以展示确切的错误信息。简而言之,鉴于Reflect的简单性、可重复性和准确性,它正在开发人员中变得越来越流行。

专家建议:Reflect的高级功能

除了上面介绍的Reflect主要服务,它还能够提供如下高级功能:

  • 通过规划某项测试在停顿任意时间间隔后进行,可确保目标网站能够在无人值守的情况下,照常提供服务。
  • 将测试计划与故障通知相结合,以减少网站在中断时的响应时间。
  • 如果需要更改测试,只需编辑和重新记录某个单击操作或某几个部分,而不必重新录入整个过程。
  • 在更改网站的界面时,可使用自动化的视觉检测工具,来检测那些与输入预期值相距甚远的故障元素。

6.正则表达式

正则表达式(Regular expressions,regex)是用来描述搜索模式行为的一组字符。它们通常被用到字符串的搜索算法中,以实现模式的查找与匹配。

前文提到的Bash,有一个唯一的正则表达式运算符 =~,可用于搜索给定正则表达式模式中的匹配项。例如:if [[ $digit =~ [0-9] ]]; then语句,是在字符串中搜索任何数字实例。当然,除了Bash之外,Python和Java也能够支持正则表达式类型的参数。

由于它们仅需几个字符,即可实现非常复杂的参数搜索,因此它们对于数据的验证,以及其他类型的文本处理任务,都是非常实用的。同时,由于是计算机领域的通用语言,因此正则表达式得到了全世界开发人员的认可。您可以通过学习Bash、Java或Python的相关功能,来进一步掌握正则表达式。

专家建议:使用正则表达式进行网页的爬取

由于正则表达式可以从大量待搜索的字符串中,提取与参数想匹配的字段,因此,正则表达式的一种最常见的使用场景是:从大量网站中提取特定的信息,即网页抓取。例如,您可以通过$:\s+([^\s]+),从竞争对手的网站上,搜索给定产品的价格。一旦表达式搜索到了$后面的相关内容,它就会将其提取到单独的文件中。

r2INBfJ.png!mobile

7. RegExr

常言道“知易行难”,正则表达式虽然容易上手,但是要用好它就比较复杂。例如,下面这个正则表达式是专门用来匹配某个特定类型的URL。您是不是被其复杂性惊得虎身一颤?

^(http|https|ftp):[\/]{2}([a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4})(:[0-9]+)?\/?([a-zA-Z0-9\-\._\?\,\'\/\\\+&%\$#\=~]*)

为了更容易地理解那些复杂的正则表达式,免费工具—RegExr能够可视化和测试给定的正则表达式。由于正则表达式往往是标准化的,因此RegExr可以解析出表达式中的关键部分,并将其转换为解释性的句子形式。同时,当您将鼠标悬停在内容说明上时,该工具能够突显其对应在表达式中的确切位置。下图便是上面那个复杂示例的具体功能性说明,以及对应的、以颜色编码的形式突显出的不同部分。

F77jEn2.png!mobile

在节省开发人员解读冗长的正则表达式的宝贵时间的同时,RegExr还消除了用户对于公式库的死记硬背。在其界面的一侧,您可以查找到完整的公式库,及其对应的用途说明。您只需单击它们,即可将公式插入表达式中。此外,RegExr还可以向待测试的表达式中,填入各种文本,以提高测试的覆盖率。

专家建议:避免使用冗长的正则表达式

尽管RegExr可以协助我们解析较长的正则表达式,但是此类长表达式毕竟晦涩难懂。而且,让单个表达式来完成所有的搜索参数,往往是一个既耗时,又容易出错的过程。因此,在实际项目中,您的团队应当优先考虑那些便于理解且较短的表达式表现形式。例如,我们可以尝试着构建多个较小的表达式,让每个表达式都仅搜索一到两个字符串。这样不仅解决了上述问题,而且能够方便您在后续的项目中,对部分或所有表达式进行重用。

小结

综上所述,我们介绍了7种能够协助开发团队提高效率的代码相关工具和软件。其中最为常用的莫过于Vim、Reflect和RegExr了。尽管这些工具的学习曲线缓陡程度不尽相同,但是只要您掌握了它们,并且能够灵活地使用它们,就一定能够节省出数小时的开发时间,以及数千次的鼠标击键。快去试试吧。

原文标题:7 Coding Tools That Will Maximize Your Effectiveness,作者:Ryan Thelin

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK