COMO作为一项基于C++的构建技术,旨在为C++提供能够应对现代化软件开发环境的能力,为C++解决语言方面存在的一些局限性,其采用的构件化设计新颖而富有价值。
COMO的出色设计:
-
构件化设计,其将复杂的系统分解为多个独立的构件,让每个构件可以单独设计、开发与测试,同时替换组件不影响系统的稳定性也不影响其他组件的可用性,达到”高内聚、低耦合“的软件设计要求,配合其提出的AOP面向方面编程支持,将操作与业务逻辑分离,进一步提高了抽象程度,使开发者和使用者不需要关心其他层级的具体内容,专注于接口进行设计开发。
-
动态加载与运行时组装:COMO允许在运行时加载新的构件,适合现代系统不停机更新和拓展的需求,更加符合现代分布式系统和微服务架构的特点。
-
摒弃了C++中复杂的多继承和虚基类设计,采用其他编程语言中常见的接口设计,这种设计使开发更为简洁,减少了开发者的心智负担。
COMO一些令人疑惑的方面:
-
COMO目前似乎仍与ElastOS及其工具链有一定的关联,考虑在规范中移除ElastOS相关描述以将其变得更加简洁。
-
COMO的来源CAR诞生于21世纪初,在那之后Modern C++已经有了很大的发展,考虑使用C++原生特性来实现部分内容,比如COMO的数据类型中CarQuintet可被vector容器取代大部分功能,C++26中也将添加静态反射功能,可考虑迁移至原生实现。
-
可考虑将构件化系统与其他系统分离,构件化系统独立成类似于k8s一样的系统,专门管理构件,可能能使COMO的架构更加简洁和清楚。
-
COMO目前可能缺乏一个包管理器,用于管理适用于COMO的所有构件,包管理器的缺乏也是C++生态的一大缺陷。