我想通过研究著名的开源项目来提高自己的编程技能,但是我发现仅跳入其源代码很容易迷路。
因此,我决定阅读有关其设计或体系结构的文档(例如UML图),以便首先了解其代码的组织结构。但是,令我惊讶的是,我找不到大型的开源项目(例如Hibernate,Spring,ASP.NET MVC,Rails等)的任何体系结构文档。
因此,我开始怀疑:如果新来的开发人员没有要阅读的体系结构/设计文档,或者项目经理只是打开源代码但关闭了文档,那么开源项目如何成功?
我想通过研究著名的开源项目来提高自己的编程技能,但是我发现仅跳入其源代码很容易迷路。
因此,我决定阅读有关其设计或体系结构的文档(例如UML图),以便首先了解其代码的组织结构。但是,令我惊讶的是,我找不到大型的开源项目(例如Hibernate,Spring,ASP.NET MVC,Rails等)的任何体系结构文档。
因此,我开始怀疑:如果新来的开发人员没有要阅读的体系结构/设计文档,或者项目经理只是打开源代码但关闭了文档,那么开源项目如何成功?
Answers:
如果新来的开发人员没有要阅读的体系结构/设计文档,为什么一个开源项目可以成功?
始终假设您知道自己在做什么,并且对要(并期望)看到的东西有合理的了解。
例如,如果您研究Symfony框架的PHP代码,那么您应该已经了解依赖注入,事件,模型/视图/控制器模式等等。
同样,如果您深入研究Linux内核的C代码,则假定您在模块化,信号,进程,线程等方面具有实际的能力。您还应该整天都吃十六进制的小知识,并用大铁铲挖掘核心堆场。
维护人员不会费心去记录架构,因为它实际上是事。有时,您会在源代码树中找到什么的轮廓。但是,更典型地,源树的组织方式使事情变得不言而喻。
简而言之,如果您缺乏维护人员期望在您查看他们的代码时所掌握的任何技能,那么您可能正在挖掘远远超出您的薪水等级的东西。首先要熟悉概念-什么是MVC模型?什么是依赖注入?等,然后潜水。
大多数成功的开源项目之所以成功,是因为该程序首先是令人印象深刻的,或者做了当时其他程序无法做的事情。这不一定意味着源文件已被很好地记录下来,因为开始项目的程序员从一开始就非常了解代码,因此不需要它。不幸的是,开放源代码项目不一定要有充分的文档记录。它要么必须是一个好的程序,要么是一个平庸的程序,但是要有充分的文档证明,以便程序员对此表示兴趣。
这样的文档经常不存在的原因很简单:程序员喜欢编程,而不是编写文档。尤其是在开源项目中,开发人员经常在他们的自由/休闲时间里贡献力量。
基本上,编写文档没什么好玩的。而且,如果他们没有为此得到报酬,谁愿意花费自己的空闲时间做一些没意思的事情?