[关闭]
@orangleliu 2016-07-13T15:10:20.000000Z 字数 2121 阅读 2138

Unix编程艺术读书笔记

linux 读书


Unix哲学,对软件设计和开发有着深远的影响,需要好好研读和体会。

RobPick 的Unix哲学

  1. 你无法判定程序会在什么地方耗费运行时间。瓶颈往往出现在意想不到的地方,所以别急于胡乱找个地方改代码,除非你已经证明那是瓶颈所在。
  2. 估量。在你没有对代码进行估量之前,特别是没有找到最耗时的部分之前,别去优化速度。
  3. 花哨的算法在n很小的时候通常很慢,而n通常很小。花哨算法的常数复杂度很大。 除非你确定n总是很大,否则不要用花哨算法。
  4. 花哨的算法比简单的算法更容易出现bug,更难实现。尽量使用简单的算法配合简单的数据结构。
  5. 数据压倒一切,如果选择正确的数据结构并把一切组织的井井有条,正确的算法也就不言自明。编程的核心是数据结构,而不是算法。

原则

一句话 KISS (keep it simple, stupid!) 原则

文本化:好协议产生好实践

透明性 可显性

主要是说易用,代码可读性,以及代码的可理解性。

编写透明,可显的系统而节省的经历,将来可能完全就是自己的财富

多道程序设计

微型语言 寻找歌唱的乐符

看到标题就想到了DSL,openresty的作者春哥经常提到这种解决问题的思路。

数据驱动编程

配置:迈出正确的第一步

最小立异原则:如果有可能,尽量允许用户将接口功能委派给熟悉的程序来完成。 其实就是说最好使用那些设计良好并且用户已经熟悉的接口设计,或者接口程序,这样减少了使用者的学习成本,如果有更好的设计当然也要尝试。

发布: 频繁的发布的原因是为了缩短同用户和开发者间的反馈循环。 因此,精细工作,等一切完美了才发布的想法是要不得的。

开源协同的最佳实践

怎样写readme?

预测未来的最好方法就是创造未来

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