用一个小时编写一个小程序

【CSDN 编者按要想快速编写程序,必须要认真考虑技能、工具选择、摊销和回报。

原文链接https://buttondown.email/hillelwayne/archive/how-much-can-you-code/

未经授权,禁止转载!


作者 | HILLEL WAYNE 译者 | 弯月
责编 | 王子彧
出品 | CSDN(ID:CSDNnews)

首先,我们来探讨一下哪些任务适合自动化。

如上图所示,如果你花费一天多的时间实现了每个月只能节省 5 分钟的任务,那么纯属浪费时间。

当然,自动化除了节省时间之外,还有其他意义。例如, 花一天时间自动化每个月只能节省5分钟的任务并不划算,但如果你十分厌恶这项任务,那么仍然是值得的。

这个问题会引出另一个问题:为什么你需要花费一天时间?

为什么不能是一个小时?

如果你能快速写出完整的程序,那么编写程序就能成为解决更广泛的问题、且节省时间的解决方案。一个小时是“快”的一个很好的衡量标准。一个小时就是一顿午饭的时间。

谈及快速编写程序,我认为我们必须考虑到下面这些因素。


技能


快速编程是与软件工程截然不同的一项技能。软件工程原则并不适用于快速编程。当然,良好的组织和清晰的意图仍然很重要,但是很多 SE 理论都是围绕如何作为团队的一部分持续开发现有代码库。例如,我很少为自己的脚本编写测试。设置测试需要时间,使用固定装置设置集成测试需要更多时间。

同时,快速反馈非常重要,甚至比常规编程更重要。我通过一种方式来快速设置和执行脚本。

代码是否方便理解也无关紧要。这些程序都很小,如果你无法理解代码,完全可以重写。如果需要扩展,也可以“适当地”重写。

对于脚本中应该使用多少第三方依赖项,我有点纠结。有时,第三方库确实很有帮助,但是你需要花时间学习和了解,而且许多第三方库的文档都很糟糕。我认为,能够弥补语言本身缺陷的依赖是好的,但是你为了逃避学习而选用某些库就不太正确。我用 click 制作了一个 Python 工具,很快就后悔了。


工具的选择


关系到工具选择的因素有下面几个。如果我们想尽可能快速地写出一个完整的程序,就应该选择简洁而富有表现力的语言。简洁的语言更容易调整,因为你需要修改的字符更少。样板代码则是负面因素。

动态语言具有一定的优势。运行时错误比静态错误更好。如果程序在执行第 20 行代码时出现类型错误,那么运行时故障仍会执行第 1~19 行,这就可以为你提供这些代码能否正常工作的信息。

一个同样重要的因素:选择适合的领域。这取决于需要自动化的任务。有些语言有很好的内置函数,有些语言恰好有很好的库。有时,最好的工具不是编程语言。最近,我遇到了一个任务:抓取谷歌地图上 100 个街道地址的 url,我采用了 Power Automate。PA 是一款有点糟糕的工具,但它有良好的浏览器自动化技术,非常适合这项任务。此外,它在 Windows 11 中是免费提供的。所以,最终我们只用了半个小时就完成了任务。

此外,我还用正则表达式、shell(特别是 PowerShell)以及电子表格解决了很多问题。

其他注意事项:一个好的 CLI 库是必须的。拥有一个良好的 GUI 框架固然很好,但不那么重要。你需要保证能够运行单个文件,并且能够使用调试器。如果条件允许,还可以考虑使用非常友好的 Copilot。


摊销


摊销指的是,算法有一些昂贵的操作和许多开销低廉的操作,因此整体运行时间低于你的预期。例如,向数组追加元素的开销是 O(1),即使有时你需要花费O(n) 来调整数组的大小,整体开销依然是 O(1),因为这种情况很少发生。

对于此处讨论的问题来说,摊销指的是,为编写脚本投入的时间可以加快将来编写脚本的速度。这对于提高技能非常重要,因此我们应该详细讨论一下。首先,熟练之后能减少查找信息的时间。

通过搜索引擎查找信息需要花费很多时间。在软件工程中,这点时间开销并不重要,因为我们的大部分时间都花在阅读上,但是现在你需要快速编写程序。将信息移动到本地缓存(文本文件、注释)很好,如果你已经掌握了这些信息,那就更好了。

此外,编写脚本会生成可供你复制粘贴的代码片段。我制作第一款应用时花了很多时间,但后面的应用编写速度明显加快,因为我可以复制粘贴已有的代码。至少,在不同的脚本中查找某些代码的速度比上网搜索更快。

编写脚本会让你接触到语言中极具表现力的黑魔法,例如宏和元编程。你知道将哪些代码放入团队维护的代码库中是很糟糕的?但是,这些黑魔法非常适合快速编写脚本,一旦你学会了如何使用这些黑魔法就会事半功倍。

因此,真正掌握一门语言有很大的好处,同时了解许多不同的工具也有好处。


回报


在美国芝加哥,每逢芝加哥小熊队主场的棒球联赛,乘坐地铁红线就是噩梦。所以我编写了一个 lambda 脚本来提醒自己。这个脚本真的可以改善我的生活吗?可以。如果需要三个小时才能写这样一个脚本,我还会写吗?可能不会。

展开阅读全文

页面更新:2024-03-14

标签:摊销   程序   软件工程   开销   脚本   快速   语言   小时   代码   时间   工具

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top