[关闭]
@cnbeining 2018-04-03T05:15:02.000000Z 字数 930 阅读 33

软件开发:能写死就别现生成

SW



摘要

能在设计时写死就不要在执行时生成。为什么?作者分享了一点人生的经验。

作者Bill Sourour

正文

很久之前,一位老程序员给我讲过这个道理,然而我现在才幡然醒悟。

我们当时正在代码审查,看到一个功能,需要生成字母A到Z的列表(类似通讯录的排列)。

我当时年轻气盛,决定利用一下Unicode:写个循环,把Unicode的65到90号取出来,做个列表。差不多长这样:

  1. for (let i = 65; i <= 90; i++) {
  2. letters.push(String.fromCharCode(i))
  3. }

那位老程序员问我为什么不把字母表硬编码掉,毕竟这种东西是永远不变的:为什么每次重新计算?

我说,我这种高手肯定不能玩这种幼儿园把式啊,我科班学过算法和数据结构的!

他说:

能在设计时写死就不要在执行时生成。

说实话,我也没写复杂度天大的死循环,这点性能损失几乎可以忽略不计。但是总体而言,这个建议很重要。

很多时候我们写的业务代码只是将一个固定结构的数据转换格式。例如,从数据库里取一两年更新一次的数据,组装一下,送进浏览器:很多逻辑是不必要的。特别是使用内容管理系统(CMS)的时候。

所以我觉得WordPress、Drupal等成熟玩家在静态网站生成器(Gatsby、Hugo、Jekyll),headless CMS、CDN等的挑战下危机不小。

现在的流行是JAMstack:JavaScript、API和Markup。效果不错

“能在设计时写死就不要在执行时生成。”这句话一直萦绕在我耳边。随着时间推移,我觉得这句话是至理名言。不仅仅是编程,而且是人生。

最近我读了桥水基金老大雷.达里奥的《原则》一书。这本书的主题是,问题的种类比问题要少。所以,如果一个人可以提早规划,那么当遇见问题时也可以游刃有余。

在人生的设计时做好规划比在执行时现场考虑来的好得多。

达里奥的方法是,将各种规划固定成原则。他甚至将这些原则编写成算法,使用历史数据进行回溯。

桥水基金是最成功的基金之一:这种方法行之有效。华尔街开始雇佣程序员进行交易,为这种方法进行背书。

作者的podcast在此

查看英文原文

Don’t do it at runtime. Do it at design time.

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注