小型编程技巧
摘要
文章分享了一系列小型编程技巧和工具,例如命令行快捷键、数据库查询和JavaScript特性,这些可以提升日常工程生产力。
<p><a href="https://lobste.rs/s/f65fy3/small_programming_tricks">评论</a></p>
查看缓存全文
缓存时间: 2026/09/15 23:18
# 实用的编程小技巧
原文链接:https://will-keleher.com/posts/small-programming-tricks-matter/
在日常工作中,我认为工程生产力很大程度上源于那些零散的小知识:知道某个语言特性存在;明白莫名的TCP延迟可能与TCP_NO_DELAY设置和Nagle算法相关;掌握解除git困境的正确命令;或是了解用`sed`重写文件的技巧。
从某种意义上说,这显而易见:任何知识体系都由更小的知识碎片组成。这些小知识碎片*当然*重要。
但我认为有些小知识特别有价值,且不需要太多前置知识储备。即使不懂Python,也可以用`python3 -m http.server`在目录中快速启动简易服务器,这或许能让你的工作更顺畅些。下面分享一些实例:
- 你可能知道`ctrl + r`可以搜索终端命令历史记录,但若安装fzf(https://github.com/junegunn/fzf),可设置让`ctrl + r`实现模糊搜索。想要更强大的功能,atuin(https://github.com/ellie/atuin)可用可搜索的SQLite数据库替代shell历史记录。per-directory-history(https://github.com/jimhester/per-directory-history)则支持在特定目录命令搜索与全局命令搜索之间切换。最后还可以配置历史记录存储量:相关StackOverflow问答(https://unix.stackexchange.com/questions/273861/unlimited-history-in-zsh)。
- SQL查询可以`SELECT`而不必指定`FROM`子句。这对测试数据库函数功能或回忆`SELECT TRUE <> NULL`的运作方式很有帮助。1(https://will-keleher.com/posts/small-programming-tricks-matter/#fn:1)
- PostgreSQL和MySQL都支持`EXPLAIN ANALYZE`,它会实际执行查询并返回大量性能分析信息。
- 正则表达式中的`\b`是词边界断言(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Word_boundary_assertion),能轻松定位单词开头或结尾。
- 使用对数分析指标可了解目标字段值的分布情况:`` const bucket = Math.floor(Math.log10(userInGroupCount)) metrics.increment("my_metric", { bucket }); ``
- 现代JS已支持Array.flatMap(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flatMap)、Object.entries(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries)和Promise.withResolvers(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers)。
- 在NodeJS中,可通过创建https.Agent(https://nodejs.org/api/https.html#class-httpsagent)并将其传递给HTTP请求来保持与外部资源的连接:`fetch(url, {method, agent})`。这对降低延迟有显著效果。
- `git log -S pattern`("git pickaxe"功能 https://git-scm.com/book/en/v2/Git-Tools-Searching)能找出所有*添加或删除*过指定字符串的提交。在维护旧代码库时尤其有用!(`git log -G pattern`功能类似,但会同时显示字符串被移动的情况)
- 类似`cd -`,可使用`git checkout -`切换至上一个HEAD指针位置。
- 你可能不需要`find`命令(https://will-keleher.com/posts/you-probably-dont-need-find/)。许多`find`命令可用glob模式如`**/*.md`替代。多数shell原生支持此功能,但bash需要通过`shopt -s globstar`启用。
- 同理,多数开发者会更倾向使用`rg`(ripgrep)而非`grep`、`ack`或`ag`。
- zsh的高级补全功能默认未启用:`` if type brew &>/dev/null; then FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}" fi autoload -Uz compinit compinit ``
也许你早已知晓这些技巧!或者你的工作领域让这些技巧毫无用武之地。即使这套技巧不适合你,我相信你这些年积累的独门秘籍必定让你的工作更高效。
在企业环境中,我认为更多知识属于这类高价值的小技巧:
- 调试$问题时,请使用$数据源
- $某同事精通$领域,遇到困难可随时求助
- 关于$技术难点的优质文档在此处
- 当$现象发生时,意味着需要手动扩容
- 执行服务滚动重启的命令是:$此命令
- 使用$工具可轻松实现$问题的脚本化
在前公司,我曾每天在工程团队的Slack频道分享一个小技巧(涵盖技术与业务),大家反馈很有帮助。即使你知道其中9个技巧,那第10个文档或方法或许能节省你的时间!每日一技巧的数量既不会让人不堪重负,偶尔还能激发有益讨论。如果你在公司是资深工程师,或许可以尝试类似做法。
相似文章
更多游戏开发者的肮脏编程技巧 (2015年)
本文汇编了游戏开发者的轶事,详细介绍了在游戏开发中用于克服技术挑战和赶上截止日期的非常规编程技巧和窍门。
值得记忆的原生网页技巧
HTMLcat 是一个提供针对 HTML、CSS 和 JavaScript 的小型原生网页技巧的资源,包括示例以及浏览器支持和无障碍访问的说明。
@Shefali__J: 每位开发者都应该知道的Chrome DevTools技巧 保存以备后用
这条推文分享了使用Chrome DevTools的基本技巧,这些技巧对Web开发者很有价值,并建议保存以备日后参考。
@madebygps: 5 个你可能不知道的 GitHub 快捷键...
本文分享了五个鲜为人知的 GitHub 快捷键,旨在提升开发者效率。
改变我世界的十行代码
作者回顾了十行代码,这些代码对他意义非凡,从编程入门到怀旧的编程技巧,突显了编程中的情感纽带。