1

上学期(2008 年 8 月 - 2008 年 12 月)我和一些同学用 C++ 编写了一个应用程序。没什么特别的,它是 Sqlite3 的 ORM。我们实现了一些像反射这样的东西来使它工作并将最终用户从丑陋的东西中解放出来。就个人而言,我认为我们做得很好,而且我们的 ORM 实际上可能对某人有用(尽管它是专门为 Sqlite3 编写的,但它很容易适应其他数据库)。

因此,我得出的结论是,它应该作为一个开源项目发布在某个地方(最有可能是 sourceforge)。但是,由于这是一个学期项目,因此在这样做之前需要解决一些问题。也就是说,它有一些应该修复的内存泄漏,并且可以重构代码的某些部分以使每个人的生活在未来更轻松。

我想了解更多有经验的 C++ 程序员对一些问题的看法:

  • 是否值得重写一些部分以应用新技术(例如,boost)。
  • 我们的 ORM 是否应该适应最新的 C++ 标准?这样做有什么好处吗?
  • 我们如何知道我们的代码何时可以发布?
  • 这个 ORM 被遗忘在互联网迷雾中的可能性有多大?(即,作为程序员的个人自豪感是否值得出版?)

现在我想不出更多的问题,但我想阅读类似的经历。

编辑:我可能应该将我的代码 + 注释翻译成英文,对吗?(自问)

提前致谢。

4

3 回答 3

1

我想我对您的特定问题“更有经验”。在 Java 或 ASP 出现之前的 Web 设计早期,我共同开发了一个开源 Web 应用程序语言和模板系统,很像 ColdFusion。如果您有兴趣,您仍然可以在http://www.steelblue.com/上看到它。它仍然在我开发它时所在的公司使用,但我不认为其他任何地方。

我发现,除非你已经建立了良好的联系并且人们正在关注你在做什么,否则让人们使用你的开源代码就像出售你的封闭源程序一样难。你真的需要为你的项目辩护,它应该有某种独特的销售主张,将它与竞争对手区分开来。

所以,这是不请自来的建议。以下是对您提出的问题的一些具体答案……当然,这纯粹是我的看法。

除非您有要添加的功能,否则我不会重写任何代码。该功能可能与特定平台或编译器兼容。可能是为了支持新的 db 数据类型或更智能的索引等。如果您打算在应用程序中投入一些更严肃的工作,请考虑您可以在下一次迭代中实际完成的路线图,以及哪些选择将使应用程序在您的周期结束时成为“最好的”。

一旦代码可用于特定目的,任何目的,就立即发布代码。两个原因。首先,现在可能有人为此目的想要它。如果它不可用,他们将使用其他东西。此外,如果它是开源的,他们可能会回馈项目。其次,越早发现有多少人想要使用代码越好。要么它会比你预期的更受欢迎,你会为继续开发而兴奋……或者……你会发现甚至没有人访问你的网页来查看你所拥有的东西。无论哪种情况,最好尽早了解人们真正想要从您的项目中得到什么,这样您就可以在计划新版本时考虑到这一点。

关于“被遗忘的迷雾”。我认为大多数项目都是。我不想成为一个沮丧的人,但是看看 Wikipedia,有 5 个 C++ ORM 工具很受欢迎,足以被提及,它们都是开源的。正如我上面所说,除非您可以将您的想法出售给人们,否则他们将采用另一种经过验证的开源解决方案。要让某人选择你而不是他们,必须发生三件事: 1. 他们需要你拥有而其他人没有的功能。2. 他们找到你的项目网站,它展示了你的代码的优越性。3. 他们足够信任你的代码来试一试。

另一方面,如果您长期从事这项工作并希望继续开发,那么随着时间的推移,事情会变得更加容易。最终,该项目将涵盖所有基础知识,您可以开始开发其他解决方案中没有的新功能。此外,您在积极开发中的时间越长,项目看起来就越值得信赖。最后,您将获得更多的经验。从现在起 2 年后,您将更有能力说出您的努力在哪些方面将对改进项目产生最大影响。

最后的想法:如果你喜欢它,从中学习,并且它不会妨碍你把食物放在桌子上,那么这是对你时间的一种很好的利用。

祝你好运!
-铝

于 2009-04-28T02:52:02.330 回答
1

关于开源部分:

如果你真的想让它成为一个开源项目,你真的应该发布它,不管它的当前状态是什么——完全工作和调试——或者一半工作并且充满内存泄漏。只是,如果它的状态不好,请确保记录它,并给它一个合适的版本号(小于一个?)。然后其他人可能会查看您的代码、提出改进建议、加入您的团队等……

于 2009-04-30T14:52:43.703 回答
1

我的 - 相当随机 - 对此事的想法(按我认为最重要的顺序):

  • 我们如何知道我们的代码何时可以发布?

就像Liran Orevi 说的:如果你要尽早开源发布。合理地记录它,并花时间提供计划或希望未来改进的路线图(这些是邀请人们帮助您的邀请,因此请注意哪些没有人在处理它们)。

  • 是否值得重写一些部分以应用新技术(例如,boost)。
  • 我们的 ORM 是否应该适应最新的 C++ 标准?这样做有什么好处吗?

SQLite 依赖于相当有限的基础。也许您不希望您的工具需要更重的环境。如果代码当前不是一团糟且无法维护的混乱,您可能希望避免增强和最新的装饰。一旦你有了一个稳定的版本(至少 1.0),你就可以开始考虑可以对版本 2 进行的改进。

  • 这个 ORM 被遗忘在互联网迷雾中的可能性有多大?(即,作为程序员的个人自豪感是否值得出版?)

大多数事情最终都在天空中的大 /dev/null 中,并且只有一种方法可以找出......如果它去任何地方,你就赢了。如果不是这样,那是一笔不大的投资,也许你在做的时候学到了一些东西。

于 2009-05-04T01:50:09.697 回答