曾几何时,一个明智的老开发人员给了我建议,直到最近我才真正感到赞赏。
在代码审查期间,我们考虑了一些功能,要求该程序显示字母AZ列表(例如,带有一组按钮的联系人列表,这些按钮可使您跳转到以某个字母开头的名称)。
于是,一个年轻的成功程序员出现了。 (嗯,就是我。)我决定,编写一个从65到90的for循环,然后根据接收到的字符代码生成字母,而不是所有字母数组的硬编码。
在JavaScript变体中,它将类似于以下内容:
for (let i = 65; i <= 90; i++) { letters.push(String.fromCharCode(i)) }
一个明智的老开发人员看着我,问我为什么不对这个数组进行硬编码。 从一个会话到另一个会话,字母表看起来似乎并不相同。 那么为什么每次都要计算呢?

本文是在EDISON Software的支持下翻译的,EDISON Software正在开发Vivaldi文档库诊断系统并投资于初创企业 。
我吓坏了。 “您怎么能期望我像某种孩子一样键入每个字母? 我是专业的软件开发人员! “天哪,我有算法和数据结构,以及数学协处理器!”
“很好,”他说。 “只需在设计时使用此功能即可生成一个数组,然后将其复制并粘贴到您的工作代码中。”
然后他说:
“避免在运行时在开发过程中可以做什么。”
现在说实话。 我的一点for循环不会降低应用程序的速度。 而且现代机器很快就会理解此代码,甚至没人会注意到。 但是,通常,这是明智的建议。
我们经常编写代码,每次请求都会将很少更改的数据从一种格式转换为另一种格式。 考虑一下所有情况,当我们从数据库中获取内容时,该内容每年可以更改一次或两次,将其格式化并发送到浏览器,而不必降低应用程序的速度。 对于与内容管理系统关联的站点尤其如此。
这就是为什么我认为,在未来几年中,诸如Wordpress,Drupal等著名的播放器将面临
Gatsby ,
Hugo或
Jekyll等静态站点生成器的严重问题,再加上平稳的构建过程,
无头CMS ,便宜的CDN和快速的连续集成过程。
该模式称为
JAMstack ,表示“ JavaScript,API和标记堆栈”。
结果非常令人印象深刻 。
明智的老开发人员的建议在我耳边响起:“避免在程序执行过程中进行开发。” 随着时间的流逝,我意识到此建议具有深远的影响。 不仅用于软件开发,而且也用于生活。
最近,我读了
雷·达里奥(Ray Dalio)的精彩
著作《原则:工作与生活》 。 这本书的中心主题是问题的种类远少于实际的问题。 因此,如果您提前进行此工作并找出如何解决您可能遇到的特定类型的问题,那么当它出现时,您将为处理该问题做好更好的准备。
实际上,当您在安静地思考生活时,在“发展”时,而不是在“执行”时,当您面对当前的实际问题并感到恐慌时,通过对各种类型的问题进行分类,可以更快地做出更好的决策。
达里奥通过将他的方法分类为一组原则来实施此技术。 他甚至走得太远,以至于他将自己的决策过程编纂为一套计算机算法,可以对大量的历史数据进行测试。
考虑到他是一个亿万富翁,并且经营着非常成功的投资公司,我想说这很奏效。 实际上,华尔街开始雇用的程序员比股票交易者更多。 因此,如果您怀疑自己选择了错误的职业,则有很多证据表明该软件正在吞噬整个世界。
- 我在最近的《 Developer On Fire》播客中分享了自己的技巧和经验教训,您可以在此处收听。
- 您可以在Jamstack.org上认识JAMstack
- Netlify博客还对静态站点生成器进行了很好的概述。
- 这是一篇有关特定堆栈的文章 ,我最近对其进行了审核并建议使用结合了Gatsby,Contentful,Netlify和Algolia的组合作为文档站点传统CMS的替代方法。
更多有趣的出版物

另请阅读博客
EDISON公司:
20个图书馆
壮观的iOS应用程序