@cnbeining
2018-04-03T13:15:02.000000Z
字数 930
阅读 1055
SW
摘要:
能在设计时写死就不要在执行时生成。为什么?作者分享了一点人生的经验。
作者: Bill Sourour
正文:
很久之前,一位老程序员给我讲过这个道理,然而我现在才幡然醒悟。
我们当时正在代码审查,看到一个功能,需要生成字母A到Z的列表(类似通讯录的排列)。
我当时年轻气盛,决定利用一下Unicode:写个循环,把Unicode的65到90号取出来,做个列表。差不多长这样:
for (let i = 65; i <= 90; i++) {
letters.push(String.fromCharCode(i))
}
那位老程序员问我为什么不把字母表硬编码掉,毕竟这种东西是永远不变的:为什么每次重新计算?
我说,我这种高手肯定不能玩这种幼儿园把式啊,我科班学过算法和数据结构的!
他说:
能在设计时写死就不要在执行时生成。
说实话,我也没写复杂度天大的死循环,这点性能损失几乎可以忽略不计。但是总体而言,这个建议很重要。
很多时候我们写的业务代码只是将一个固定结构的数据转换格式。例如,从数据库里取一两年更新一次的数据,组装一下,送进浏览器:很多逻辑是不必要的。特别是使用内容管理系统(CMS)的时候。
所以我觉得WordPress、Drupal等成熟玩家在静态网站生成器(Gatsby、Hugo、Jekyll),headless CMS、CDN等的挑战下危机不小。
现在的流行是JAMstack:JavaScript、API和Markup。效果不错。
“能在设计时写死就不要在执行时生成。”这句话一直萦绕在我耳边。随着时间推移,我觉得这句话是至理名言。不仅仅是编程,而且是人生。
最近我读了桥水基金老大雷.达里奥的《原则》一书。这本书的主题是,问题的种类比问题要少。所以,如果一个人可以提早规划,那么当遇见问题时也可以游刃有余。
在人生的设计时做好规划比在执行时现场考虑来的好得多。
达里奥的方法是,将各种规划固定成原则。他甚至将这些原则编写成算法,使用历史数据进行回溯。
桥水基金是最成功的基金之一:这种方法行之有效。华尔街开始雇佣程序员进行交易,为这种方法进行背书。
作者的podcast在此。
查看英文原文: