搞了个 C++ 构建系统

我平时的工作内容是开发在服务端上运行的网络程序,主要语言是 C++,并且几乎全部跑在统一的机器环境上。所以我们一直以来都在使用一套简单从 blade-build 魔改来的编译系统。这个系统的本质是一个 Unix Makefile 的生成器,这个生成器使用 Python2 编写,代码有点难以维护。(毕竟使用动态语言的东西就是这样,出活还是很快的,但是时间一长了,代码就变的很难维护。因为后来的人,很难完全理解其中每个变量的类型,这对于我这种长期写静态强类型语言的人来说,是很痛苦的。)

软件设计哲学(NOTE)

1 RED FLAGS

A shallow module is one whose interface is complicated relative to the functionality it provides. Shallow modules don’t help much in the battle against complexity, because the benefit they provide (not having to learn about how they work internally) is negated by the cost of learning and using their interfaces. Small modules tend to be shallow.

Information leakage occurs when the same knownledge is used in multiple places, such as two different classed that both understand the format of a particular type of file.

一个关于 private member function detect 的 SFINAE 模板

1 问题的开始

问题起源于,我要搞一个模板,来检查一个类,是不是有一个特定的回调接口 OnAlarm()。我显然希望在我的模板类里面,直接调用这个 OnAlarm 回调的。但是问题,就这么出现了。我需要一个模板,来检查一个传给构造函数的指针指向的类型,是不是有我需要的 OnAlarm 方法。如果没有的话,我需要使用另一套回调的机制。 问题就出在了这个检查上面。