关于运行模型
OSG中的类很多,只看OSG代码,很难把各个类串联起来。
我们知道面向对象程序的运行模型是:对象+对象间协作。
单纯看代码,多数情形下,只能了解程序中有哪些对象,而不知道它们是如何协作的,这是目前IT行业中,源码阅读最大的痛点。说直白一点,就是拿到源码也看不懂,或者说很难看懂。
开发者在开发程序时,首先要设计程序的运行模型,然后根据运行模型编写代码。所以,阅读源码和编写代码是一个相反的过程。
至此,看不懂源码的原因就比较明显了:
源码是静态的,而运行时的程序是动态的,想通过静态的代码信息掌握程序运行时的规律,其中缺少的重要信息是 程序运行模型。
程序运行模型信息从哪来呢?答案是 项目文档。
项目文档是项目的元信息,完善的项目文档是项目可维护性的保证。在做实际项目时,公司都会要求产出项目文档。同时,这也是软件工程的要求。
下面说说开源,由于开源项目作者精力时间问题,很多开源项目是没有文档的。这就导致一些开源项目虽然很优秀,但是对普通开发者来说,学起来比较困难,这就形成了学习的门槛。这一现状很难在短时间内改变。
除了项目文档,以下部分也可以提供额外的信息:
- 项目的提交历史
- 项目提供的代码示例
但是这些相对于项目文档而言,具有不全面、信息零散的缺点。而且这些信息并不是直接的运行模型信息,需要源码的阅读者根据这些信息进行推导,猜测,验证。
为什么不直接提供程序的运行模型呢?这也是我后面将要做的事情,大家如果感兴趣,都可以参与进来。