发布于 2026-01-06 15 阅读
0

有些最好的编码工具并非编码工具。

有些最好的编码工具并非编码工具。

"That which hinders your task... is your task." -Sanford Meisner
Enter fullscreen mode Exit fullscreen mode

好了,Sublime Text 已经准备就绪,IntelliJ IDEA 就像你意志的延伸,Charles 则在监控你的网站流量。QUnit、jUnit 和 Jenkins 联手为你保驾护航,就像《创战纪》里那个漂浮的小“比特”一样。

开局不错。

但有些最好的编码工具并非严格意义上的编码工具。我们来聊聊这些工具

密码管理器:测试登录信息、地址和信用卡。

您已经在使用密码管理器来保存您的开发服务器、测试服务器、Jenkins、Jira、Splunk、GitHub、StackOverflow 以及您工作所需的其他十几个登录凭据,对吗?很好。

它还可以做更多。

当我需要测试特定类型的账户时,我已经在1Password中准备好了相应的账户。同样的,我也准备了虚假的 MasterCard、VISA、AmEx 和 PayPal 账户。如果我需要测试国际收货地址,我已经准备好了安特卫普、伦敦、北京、迪拜、利马、首尔、哈拉雷和温哥华的地址。无需复制粘贴,也无需担心拼写错误。

不,这并不能替代真正的自动化测试。但是,当你收到客服的留言说“代发货商无法使用国际货运单!求助!”时,它确实很有帮助。

代码片段工具:代码样板、分支名称、工单链接等。

TextExpanderBreevyAlfred一直是这方面的热门选择。Dash也很受欢迎,IntelliJ和其他 IDE都内置了对代码片段的良好支持。

它们都很好,但我喜欢 TextExpander,主要是因为它内置了很多很棒的功能,而且让我可以在电脑上的任何应用程序中使用我的代码片段。

TextExpander 在后台运行并监听您的键盘输入。当您输入特定字符串时,它会立即将其替换为已存储的值。例如:

我输入…… 我明白了……
tstampx 2017.11.28-12.21.48
今天x 11月28日,星期二
昨天x 11月27日,星期一

我还用它来纠正拼写错误:

我输入…… 我明白了……
返回 返回
克里斯 克里斯

你明白我的意思。

java.text.DecimalFormat使用符号¤来指示您希望在何处显示特定于区域设置的货币符号。知道如何输入¤吗?我也不知道。所以我将该字符绑定到一个代码片段中,现在当我输入currx时,就会显示¤

我输入…… 我明白了……
currx ¤

我多久用一次那个符号?很少。但我再也不用查那个符号了。

当我在网页中需要占位符文本时,我只需输入loremx,就能得到 200 个伪拉丁字母组成的无意义文本。简单却非常实用。

真正神奇之处在于使用 TextExpander 在后台运行脚本并输出结果。(它可以直接运行 shell 脚本和 JavaScript。)我输入jtitlex,TextExpander 就会运行一个脚本,从 Jira 的 REST API 获取我正在处理的工单的标题。如果我输入tlx,就能得到该工单的 URL。输入tkx则会得到它的 Jira ID。

我为什么要这么做?想想你收到的每一封询问“frob 问题进展如何?”的邮件。我收到这类邮件时,第一行总是会明确说明讨论的是什么问题,包括工单号、标题以及工单系统中的链接。这只需要几段 TextExpander 代码片段,三秒钟就能完成,而且我根本不需要切换窗口。

有效沟通的关键之一在于迅速消除误解。代码片段工具是简化这一过程的强大工具。

我还有一个名为vm-boilerplate 的脚本,它可以读取Velocity模板文件并生成一些 Java 样板代码,用于绑定必要的输入值。所以我只需输入vmtx,将文件名告诉 TextExpander,TextExpander 就会运行我的 vm-boilerplate 脚本,并将输出结果粘贴到我正在使用的任何编辑器中。它适用于所有平台,减少了输入,避免了拼写错误和参数遗漏。(因为经过几十年的激烈争论,我们仍然没有解决fileNamevm 和 vm 的filename争论。)

我还有一个名为tebind的小脚本,用于从命令行或其他脚本绑定 TextExpander 代码片段。这样,代码片段就不必是硬编码的值;我可以根据其他进程动态地重新绑定它们。

TextExpander 的功能不止文本替换。它的脚本功能可以让你自动执行任何快速信息查找操作,或者触发脚本来自动生成文本。

待办事项清单管理:让你的计划井然有序。

选择使用哪种待办事项管理工具、如何使用,甚至是否使用,都是非常个人化的决定。如果你的系统运行良好,我绝不会妄自揣测如何改进它。

我用的是OmniFocus,不过市面上有很多不错的选择。多年来我一直用Moleskine 的日记本,非常好用。我也用过一段时间Things ,感觉还不错。dev.to 上有一篇很棒的文章,讲的是如何将一个强大的系统直接集成到 Gmail 中

对我来说,能够点击快捷键Alt-space,输入待办事项和截止日期,然后继续做我之前的工作,这简直太棒了。这在会议中尤其方便。我可以快速记录所有需要跟进的事项,而不会错过讨论内容。

我不仅把待办事项记在里面,还会记下一些像“期待 Thor 提供数据流程图”之类的事项,截止日期设为明天。这样,如果我没收到需要的流程图,就提醒自己联系 Thor。

一旦任务被列入待办事项清单,我就可以完全清空思绪,重新投入到之前的工作中。OmniFocus 会记住我所有的任务和截止日期,所以我无需操心。

总的来说,我奉行“搞定一切”(Getting Things Done)的原则。你可以选择任何适合自己的理念/方法。如果你还没看过兰迪·鲍什关于时间管理的演讲,那就别看这篇文章了,赶紧去看吧。绝对物超所值。

应用切换与自动化

我个人比较喜欢Alfred,不过市面上也有一些同样好用的免费软件。(我平时也用Alfred做其他事情,所以就决定付费购买授权。既然买了,那就好好利用吧。)

我设置了一组键盘快捷键,可以启动或切换到特定应用程序。例如,`Ctrl+C`Cmd-Shift-Ctrl-J可以打开浏览器,Cmd-Shift-Ctrl-K`Ctrl+D` 可以打开 IDE,`Ctrl+E`Cmd-Shift-Ctrl-L可以打开终端。我喜欢这种方式Cmd-TAB,因为它让我可以完全依靠肌肉记忆来切换应用程序。(另外:是的,我在 TextExpander 中将chordxCmd-Shift-Ctrl-绑定到了 `Ctrl+ C`。)

大局

归根结底,所有这些工具都是为了清除组织和思维上的杂乱,以便你可以集中注意力,而不是不断地被琐事缠身。

面对任何障碍,都有两种解决办法。一是绕开问题,使其变得无关紧要;二是精于应对,使其不再是障碍,反而成为优势。

我刚开始上计算机科学课的时候,经常听到同学们说:“为什么一定要用 CVS?为什么不能把项目副本保存在网络驱动器上?那样应该没问题吧?” 签入签出文件、处理合并冲突等等,都让他们觉得很麻烦,所以他们很想绕过这些步骤。

但我们都知道,版本控制系统的好处远胜于其他任何方案,以至于在实际的软件团队中,这个问题几乎从未被提上日程。正确的解决方案是熟练掌握 git/hg/svn 的使用,从而以最小的代价获得最大的收益。

高效的编程建立在良好的组织和沟通能力之上。如果你发现自己总是被琐事缠身,无法专注于高效的工作,那么发泄怒火也无济于事。真正有帮助的是,你要努力提升这些琐事的处理能力,让它们不再把你拖入泥潭。

文章来源:https://dev.to/craser/some-of-the-best-coding-tools-arent-coding-tools-4c