现在很多开源项目,除了代码,就只有使用文档,但极少有能具体说明其设计思想,问题解决思路的,这极大的增加了代码阅读的顺畅度。
像咱们在公司,也是要写各种文档的,有些比较负责任的程序员就会详细说明其代码使用了什么设计模式,用了何种架构等等,就算没有,我们在交接的时候也会问,对方也会如实回答。可是开源项目要是每个人都去问作者一遍为什么这么设计,那作者肯定是回答不过来。而现实是我们如果真有要需要,就只能一点一点的去啃代码,最终靠自己去补充这些设计思想和解决思路,并且我们也不会把这些结果贡献到这个开源项目里。
在我看来,现在很多开源项目其实只是披着技术分享的外衣在营销产品罢了。对于那些真正热爱技术,想要从中学习的人来说,这虽然不是问题,但是如果真有这么一份设计文档,我相信最终会有更多人受益,能大大减少阅读代码的时间。
当然我知道文档也不是那么好写的,而且随着代码的变更,文档也是要跟着做修改的,这会大大增加项目的开发成本。但我想你都开源了,这个大家不是可以共同承担吗?即使作者不这么做,那些真正参与到项目的人,本地里也或多或少会总结一些文档,只是没共享出来而已,这不是在做重复的事?个人觉得是因为作者本人懒导致,因为我就是这样的人。
有些人可能会说,这样可以锻炼个人解决问题的能力。通过阅读代码,总结出其设计思想和解决思路可以获得更深刻的理解。我不否认这种说法,但这真的很耗费时间。尤其是像 MySQL 这种大型开源项目,你觉得你能看得完?现在大家都是看书学的 MySQL 实现原理,要是由开发的人自己写这份设计文档,我相信会更好。
像我自己之前做了一个浏览器扩展,其中就用到了很多技术,很值得分享。但考虑到商业风险,我放弃了开源的想法。现在这个扩展没什么人用,我觉得已经没什么商业价值了,可以开源。但是如果只是这么简单的把代码丢上去,我觉得这就是在敷衍,因为本质上我还是想让更多人使用这款产品,然后我就可以放广告去赚点广告费了。如果加上一份详细的设计文档,会花费我大量时间,我懒得这么做。而且我更关注的是前面说的赚钱而非技术提升,因为我是做后端的,这个项目全部用的是前端,对我来说技能提升有限。而且我发这么一份帖子,也是考虑到其能对我的这款产品起到推广效果我才发。自从做了这么一款产品,我变成了一个现实的人,却也因此更加看透了这个世界。在程序员这个纯洁的世界中,我不打算披着虚假的外衣,所以说了这么一段真实的话。
我知道我这么发出来肯定会被很多人吐槽,没关系,我已经准备好迎接各位的炮火了。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.